mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Serialization: restrict swiftmodules to distribution channels
There are scenarios where different compilers are distributed with compatible serialization format versions and the same tag. Distinguish swiftmodules in such a case by assigning them to different distribution channels. A compiler expecting a specific channel will only read swiftmodules from the same channel. The channels should be defined by downstream code as it is by definition vendor specific. For development, a no-channel compiler loads or defining the env var SWIFT_IGNORE_SWIFTMODULE_REVISION skips this new check. rdar://123731777
This commit is contained in:
@@ -313,6 +313,16 @@ StringRef getCurrentCompilerSerializationTag() {
|
||||
#endif
|
||||
}
|
||||
|
||||
StringRef getCurrentCompilerChannel() {
|
||||
static const char* forceDebugChannel =
|
||||
::getenv("SWIFT_FORCE_SWIFTMODULE_CHANNEL");
|
||||
if (forceDebugChannel)
|
||||
return forceDebugChannel;
|
||||
|
||||
// Leave it to downstream compilers to define the different channels.
|
||||
return StringRef();
|
||||
}
|
||||
|
||||
unsigned getUpcomingCxxInteropCompatVersion() {
|
||||
return SWIFT_VERSION_MAJOR + 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user