NCGenerics: rebuild stdlib from its interface

When a NoncopyableGenericsMismatch happens between the compiler and
stdlib, allow the compiler to rebuild the stdlib from its interface
instead of exiting with an error.
This commit is contained in:
Kavon Farvardin
2024-02-15 15:11:32 -08:00
parent 7e4761a751
commit 08b71e0136
34 changed files with 56 additions and 59 deletions

View File

@@ -426,8 +426,8 @@ static ValidationInfo validateControlBlock(
}
case control_block::HAS_NONCOPYABLE_GENERICS: {
auto hasNoncopyableGenerics = scratch[0];
if (requiresNoncopyableGenerics && !hasNoncopyableGenerics)
result.status = Status::NotUsingNoncopyableGenerics;
if (requiresNoncopyableGenerics != hasNoncopyableGenerics)
result.status = Status::NoncopyableGenericsMismatch;
break;
}
default:
@@ -533,8 +533,8 @@ std::string serialization::StatusToString(Status S) {
case Status::FormatTooNew: return "FormatTooNew";
case Status::RevisionIncompatible: return "RevisionIncompatible";
case Status::NotInOSSA: return "NotInOSSA";
case Status::NotUsingNoncopyableGenerics:
return "NotUsingNoncopyableGenerics";
case Status::NoncopyableGenericsMismatch:
return "NoncopyableGenericsMismatch";
case Status::MissingDependency: return "MissingDependency";
case Status::MissingUnderlyingModule: return "MissingUnderlyingModule";
case Status::CircularDependency: return "CircularDependency";