@@ -318,8 +318,8 @@ struct ModuleRebuildInfo {
318318 return " compiled with a different version of the compiler" ;
319319 case Status::NotInOSSA:
320320 return " module was not built with OSSA" ;
321- case Status::NotUsingNoncopyableGenerics :
322- return " module was not built with NoncopyableGenerics" ;
321+ case Status::NoncopyableGenericsMismatch :
322+ return " module was not built with matching NoncopyableGenerics feature " ;
323323 case Status::MissingDependency:
324324 return " missing dependency" ;
325325 case Status::MissingUnderlyingModule:
@@ -869,7 +869,10 @@ class ModuleInterfaceLoaderImpl {
869869 loadMode == ModuleLoadingMode::PreferSerialized &&
870870 !version::isCurrentCompilerTagged () &&
871871 rebuildInfo.getOrInsertCandidateModule (adjacentMod).serializationStatus !=
872- serialization::Status::SDKMismatch) {
872+ serialization::Status::SDKMismatch &&
873+ // FIXME(kavon): temporary while we bootstrap NoncopyableGenerics.
874+ rebuildInfo.getOrInsertCandidateModule (adjacentMod).serializationStatus !=
875+ serialization::Status::NoncopyableGenericsMismatch) {
873876 // Special-case here: If we're loading a .swiftmodule from the resource
874877 // dir adjacent to the compiler, defer to the serialized loader instead
875878 // of falling back. This is to support local development of Swift,
@@ -1933,7 +1936,13 @@ InterfaceSubContextDelegateImpl::getCacheHash(StringRef useInterfacePath,
19331936 //
19341937 // If OSSA modules are enabled, we use a separate namespace of modules to
19351938 // ensure that we compile all swift interface files with the option set.
1936- unsigned (genericSubInvocation.getSILOptions ().EnableOSSAModules ));
1939+ unsigned (genericSubInvocation.getSILOptions ().EnableOSSAModules ),
1940+
1941+ // Whether or not NoncopyableGenerics are enabled, as that influences
1942+ // many things like generic signatures and conformances.
1943+ unsigned (genericSubInvocation.getLangOptions ()
1944+ .hasFeature (Feature::NoncopyableGenerics))
1945+ );
19371946
19381947 return llvm::toString (llvm::APInt (64 , H), 36 , /* Signed=*/ false );
19391948}
0 commit comments