[Serialization] Serialize a flag that indicates whether ExtensibleEnum feature is supported by a module

When `ExtensibleEnums` flag is set, it's going to be reflected in
the module file produced by the compiler to make sure that consumers
know that non-`@frozen` enumerations can gain new cases in the
future and switching cannot be exhaustive.
This commit is contained in:
Pavel Yaskevich
2025-02-24 10:17:12 -08:00
parent 9e4859b302
commit 3cc24f7c19
10 changed files with 50 additions and 4 deletions

View File

@@ -224,6 +224,9 @@ static bool readOptionsBlock(llvm::BitstreamCursor &cursor,
case options_block::STRICT_MEMORY_SAFETY:
extendedInfo.setStrictMemorySafety(true);
break;
case options_block::EXTENSIBLE_ENUMS:
extendedInfo.setSupportsExtensibleEnums(true);
break;
default:
// Unknown options record, possibly for use by a future version of the
// module format.
@@ -1501,6 +1504,7 @@ ModuleFileSharedCore::ModuleFileSharedCore(
Bits.AllowNonResilientAccess = extInfo.allowNonResilientAccess();
Bits.SerializePackageEnabled = extInfo.serializePackageEnabled();
Bits.StrictMemorySafety = extInfo.strictMemorySafety();
Bits.SupportsExtensibleEnums = extInfo.supportsExtensibleEnums();
MiscVersion = info.miscVersion;
SDKVersion = info.sdkVersion;
ModuleABIName = extInfo.getModuleABIName();