ModuleInterface/Serialization: allow library authors to define a custom module version number

This allows library authors to pass down a project version number so that library users can conditionally
import that library based on the available version in the search paths.

Needed for rdar://73992299
This commit is contained in:
Xi Ge
2021-04-29 15:59:56 -07:00
parent dfec9e6434
commit fe5c7ef995
17 changed files with 79 additions and 6 deletions

View File

@@ -489,10 +489,11 @@ void DocSerializer::writeDocHeader() {
control_block::TargetLayout Target(Out);
auto& LangOpts = M->getASTContext().LangOpts;
auto verText = version::getSwiftFullVersion(LangOpts.EffectiveLanguageVersion);
Metadata.emit(ScratchRecord, SWIFTDOC_VERSION_MAJOR, SWIFTDOC_VERSION_MINOR,
/*short version string length*/0, /*compatibility length*/0,
version::getSwiftFullVersion(
LangOpts.EffectiveLanguageVersion));
/*user module version major*/0,
/*user module version minor*/0, verText);
ModuleName.emit(ScratchRecord, M->getName().str());
Target.emit(ScratchRecord, LangOpts.Target.str());
@@ -875,10 +876,12 @@ public:
control_block::TargetLayout Target(Out);
auto& LangOpts = M->getASTContext().LangOpts;
auto verText = version::getSwiftFullVersion(LangOpts.EffectiveLanguageVersion);
Metadata.emit(ScratchRecord, SWIFTSOURCEINFO_VERSION_MAJOR,
SWIFTSOURCEINFO_VERSION_MINOR,
/*short version string length*/0, /*compatibility length*/0,
version::getSwiftFullVersion(LangOpts.EffectiveLanguageVersion));
/*user module version major*/0,
/*user module version minor*/0, verText);
ModuleName.emit(ScratchRecord, M->getName().str());
Target.emit(ScratchRecord, LangOpts.Target.str());