mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge pull request #39705 from apple/es-module-alias-serialize
[Module aliasing] Serialize SIL and binaries with module real names for referenced or imported modules. Resolves rdar://83632529
This commit is contained in:
@@ -755,8 +755,10 @@ IdentifierID Serializer::addModuleRef(const ModuleDecl *module) {
|
||||
return CURRENT_MODULE_ID;
|
||||
if (module == this->M->getASTContext().TheBuiltinModule)
|
||||
return BUILTIN_MODULE_ID;
|
||||
// Use module 'real name', which can be different from 'name'
|
||||
// in case module aliasing was used (-module-alias flag)
|
||||
auto moduleName =
|
||||
module->getASTContext().getIdentifier(module->getName().str());
|
||||
module->getASTContext().getIdentifier(module->getRealName().str());
|
||||
return addDeclBaseNameRef(moduleName);
|
||||
}
|
||||
|
||||
@@ -965,7 +967,9 @@ void Serializer::writeHeader(const SerializationOptions &options) {
|
||||
control_block::RevisionLayout Revision(Out);
|
||||
control_block::IsOSSALayout IsOSSA(Out);
|
||||
|
||||
ModuleName.emit(ScratchRecord, M->getName().str());
|
||||
// Write module 'real name', which can be different from 'name'
|
||||
// in case module aliasing is used (-module-alias flag)
|
||||
ModuleName.emit(ScratchRecord, M->getRealName().str());
|
||||
|
||||
SmallString<32> versionStringBuf;
|
||||
llvm::raw_svector_ostream versionString(versionStringBuf);
|
||||
@@ -1105,6 +1109,8 @@ void Serializer::writeHeader(const SerializationOptions &options) {
|
||||
static void flattenImportPath(const ImportedModule &import,
|
||||
SmallVectorImpl<char> &out) {
|
||||
llvm::raw_svector_ostream outStream(out);
|
||||
// This will write the module 'real name', which can be different
|
||||
// from the 'name' in case module aliasing was used (see `-module-alias`)
|
||||
import.importedModule->getReverseFullModuleName().printForward(
|
||||
outStream, StringRef("\0", 1));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user