From da17628eff8bb0dcbfae2655c786d09dc01b9c13 Mon Sep 17 00:00:00 2001 From: Lily Vulcano Date: Wed, 16 Jan 2019 14:53:46 -0800 Subject: [PATCH 1/5] =?UTF-8?q?Allow=20update-checkout=20to=20check=20out?= =?UTF-8?q?=20=E2=80=98as=20if=E2=80=99=20another=20platform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../update_checkout/update_checkout/update_checkout.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utils/update_checkout/update_checkout/update_checkout.py b/utils/update_checkout/update_checkout/update_checkout.py index a2159bdf7602e..dea0840a910bb 100755 --- a/utils/update_checkout/update_checkout/update_checkout.py +++ b/utils/update_checkout/update_checkout/update_checkout.py @@ -386,11 +386,11 @@ def full_target_name(repository, target): raise RuntimeError('Cannot determine if %s is a branch or a tag' % target) -def skip_list_for_platform(config): +def skip_list_for_platform(config, treat_like_platform=None): # If there is a platforms key only include the repo if the # plaform is in the list skip_list = [] - platform_name = platform.system() + platform_name = treat_like_platform or platform.system() for repo_name, repo_info in config['repos'].items(): if 'platforms' in repo_info: @@ -479,6 +479,10 @@ def main(): help="Number of threads to run at once", default=0, dest="n_processes") + parser.add_argument( + '--platform', + help='Clone as if the platform was the one specified, useful for e.g. Docker use.', + dest="platform") args = parser.parse_args() if not args.scheme: @@ -526,7 +530,7 @@ def main(): if scheme is None: scheme = config['default-branch-scheme'] - skip_repo_list = skip_list_for_platform(config) + skip_repo_list = skip_list_for_platform(config, args.platform) skip_repo_list.extend(args.skip_repository_list) clone_results = obtain_all_additional_swift_sources(args, config, clone_with_ssh, From 0def52dd1aac69b3f73bb45ee60dbd16b6b2df94 Mon Sep 17 00:00:00 2001 From: Lily Vulcano Date: Tue, 11 Dec 2018 16:39:10 -0800 Subject: [PATCH 2/5] [DNM] Fix bridging to work with a split Foundation module --- include/swift/AST/KnownIdentifiers.def | 3 ++ include/swift/SIL/BridgedTypes.def | 16 ++++++---- include/swift/SIL/TypeLowering.h | 4 +++ lib/AST/ASTContext.cpp | 12 ++++++- lib/SIL/SILFunctionType.cpp | 32 +++++++++++++++++++ lib/Sema/CSSimplify.cpp | 38 +++++++++++++++++++++++ stdlib/public/core/BridgeObjectiveC.swift | 2 +- 7 files changed, 99 insertions(+), 8 deletions(-) diff --git a/include/swift/AST/KnownIdentifiers.def b/include/swift/AST/KnownIdentifiers.def index 5624a18d20f10..0f047caec7e6b 100644 --- a/include/swift/AST/KnownIdentifiers.def +++ b/include/swift/AST/KnownIdentifiers.def @@ -59,6 +59,9 @@ IDENTIFIER(error) IDENTIFIER(errorDomain) IDENTIFIER(forKeyedSubscript) IDENTIFIER(Foundation) +IDENTIFIER(SwiftFoundation) +IDENTIFIER(FoundationSoil) +IDENTIFIER(SwiftFoundationSoil) IDENTIFIER(for) IDENTIFIER(forKey) IDENTIFIER(from) diff --git a/include/swift/SIL/BridgedTypes.def b/include/swift/SIL/BridgedTypes.def index 138b67f0673d6..e51b9e416d463 100644 --- a/include/swift/SIL/BridgedTypes.def +++ b/include/swift/SIL/BridgedTypes.def @@ -34,15 +34,19 @@ #define BRIDGING_KNOWN_TYPE(module, type) #endif +#ifndef BRIDGING_KNOWN_TYPE_WITH_MODULES_4 +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(module1, module2, module3, module4, type) +#endif + #ifndef BRIDGE_TYPE #define BRIDGE_TYPE(bmodule, btype, nmodule, ntype, opt) #endif -BRIDGING_KNOWN_TYPE(Foundation, NSString) -BRIDGING_KNOWN_TYPE(Foundation, NSArray) -BRIDGING_KNOWN_TYPE(Foundation, NSDictionary) -BRIDGING_KNOWN_TYPE(Foundation, NSSet) -BRIDGING_KNOWN_TYPE(Foundation, NSError) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSString) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSArray) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSDictionary) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSSet) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSError) BRIDGING_KNOWN_TYPE(Swift, String) BRIDGING_KNOWN_TYPE(ObjectiveC, ObjCBool) BRIDGING_KNOWN_TYPE(ObjectiveC, Selector) @@ -55,4 +59,4 @@ BRIDGE_TYPE(Darwin, DarwinBoolean, Swift, Bool, false) #undef BRIDGING_KNOWN_TYPE #undef BRIDGE_TYPE - +#undef BRIDGING_KNOWN_TYPE_WITH_MODULES_4 diff --git a/include/swift/SIL/TypeLowering.h b/include/swift/SIL/TypeLowering.h index 295ec0b6e57f7..b1d7fe23d04e8 100644 --- a/include/swift/SIL/TypeLowering.h +++ b/include/swift/SIL/TypeLowering.h @@ -697,6 +697,8 @@ class TypeConverter { // Types converted during foreign bridging. #define BRIDGING_KNOWN_TYPE(BridgedModule,BridgedType) \ Optional BridgedType##Ty; +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(_1, _2, _3, _4, BridgedType) \ + Optional BridgedType##Ty; #include "swift/SIL/BridgedTypes.def" const TypeLowering & @@ -950,6 +952,8 @@ class TypeConverter { /// Known types for bridging. #define BRIDGING_KNOWN_TYPE(BridgedModule,BridgedType) \ CanType get##BridgedType##Type(); +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(_1, _2, _3, _4, BridgedType) \ + CanType get##BridgedType##Type(); #include "swift/SIL/BridgedTypes.def" /// Get the capture list from a closure, with transitive function captures diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 9dfddd55825e3..cb5073698ccce 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -848,7 +848,17 @@ StructDecl *ASTContext::getObjCBoolDecl() const { #define GET_FOUNDATION_DECL(NAME) \ ClassDecl *ASTContext::get##NAME##Decl() const { \ if (!getImpl().NAME##Decl) { \ - if (ModuleDecl *M = getLoadedModule(Id_Foundation)) { \ + ModuleDecl *M = getLoadedModule(Id_SwiftFoundationSoil); \ + if (!M) { \ + M = getLoadedModule(Id_SwiftFoundation); \ + } \ + if (!M) { \ + M = getLoadedModule(Id_FoundationSoil); \ + } \ + if (!M) { \ + M = getLoadedModule(Id_Foundation); \ + } \ + if (M) { \ /* Note: use unqualified lookup so we find NSError regardless of */ \ /* whether it's defined in the Foundation module or the Clang */ \ /* Foundation module it imports. */ \ diff --git a/lib/SIL/SILFunctionType.cpp b/lib/SIL/SILFunctionType.cpp index 60c41bf05f347..60d4ea5f86656 100644 --- a/lib/SIL/SILFunctionType.cpp +++ b/lib/SIL/SILFunctionType.cpp @@ -173,11 +173,43 @@ static CanType getKnownType(Optional &cacheSlot, ASTContext &C, return t; } +static CanType getKnownTypeFromModules4(Optional &cacheSlot, ASTContext &C, + StringRef moduleName1, StringRef moduleName2, + StringRef moduleName3, StringRef moduleName4, + StringRef typeName) { + + auto temporaryCacheSlot = Optional(); + auto T = getKnownType(temporaryCacheSlot, C, moduleName1, typeName); + + if (!T) { + temporaryCacheSlot = Optional(); + T = getKnownType(temporaryCacheSlot, C, moduleName2, typeName); + } + if (!T) { + temporaryCacheSlot = Optional(); + T = getKnownType(temporaryCacheSlot, C, moduleName3, typeName); + } + if (!T) { + temporaryCacheSlot = Optional(); + T = getKnownType(temporaryCacheSlot, C, moduleName4, typeName); + } + + cacheSlot = temporaryCacheSlot; + return T; +} + #define BRIDGING_KNOWN_TYPE(BridgedModule,BridgedType) \ CanType TypeConverter::get##BridgedType##Type() { \ return getKnownType(BridgedType##Ty, M.getASTContext(), \ #BridgedModule, #BridgedType); \ } +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(BridgedModule1,BridgedModule2,BridgedModule3,BridgedModule4,BridgedType) \ + CanType TypeConverter::get##BridgedType##Type() { \ + return getKnownTypeFromModules4(BridgedType##Ty, M.getASTContext(), \ + #BridgedModule1, #BridgedModule2, \ + #BridgedModule3, #BridgedModule4, \ + #BridgedType); \ + } #include "swift/SIL/BridgedTypes.def" /// Adjust a function type to have a slightly different type. diff --git a/lib/Sema/CSSimplify.cpp b/lib/Sema/CSSimplify.cpp index 984cd195ddc5c..5244804268688 100644 --- a/lib/Sema/CSSimplify.cpp +++ b/lib/Sema/CSSimplify.cpp @@ -3539,7 +3539,12 @@ performMemberLookup(ConstraintKind constraintKind, DeclName memberName, // a lookup into that Objective-C type. if (bridgedType) { LookupResult &bridgedLookup = lookupMember(bridgedType, memberName); + ModuleDecl *foundationModule = nullptr; + ModuleDecl *foundationSoilModule = nullptr; + ModuleDecl *swiftFoundationModule = nullptr; + ModuleDecl *swiftFoundationSoilModule = nullptr; + for (auto result : bridgedLookup) { // Ignore results from the Objective-C "Foundation" // module. Those core APIs are explicitly provided by the @@ -3556,6 +3561,39 @@ performMemberLookup(ConstraintKind constraintKind, DeclName memberName, continue; } + if (foundationSoilModule) { + if (module == foundationSoilModule) + continue; + } else if (ClangModuleUnit::hasClangModule(module) && + module->getName().str() == "FoundationSoil") { + // Cache the foundation module name so we don't need to look + // for it again. + foundationSoilModule = module; + continue; + } + + if (swiftFoundationModule) { + if (module == swiftFoundationModule) + continue; + } else if (ClangModuleUnit::hasClangModule(module) && + module->getName().str() == "SwiftFoundation") { + // Cache the foundation module name so we don't need to look + // for it again. + swiftFoundationModule = module; + continue; + } + + if (swiftFoundationSoilModule) { + if (module == swiftFoundationSoilModule) + continue; + } else if (ClangModuleUnit::hasClangModule(module) && + module->getName().str() == "SwiftFoundationSoil") { + // Cache the foundation module name so we don't need to look + // for it again. + swiftFoundationSoilModule = module; + continue; + } + addChoice(getOverloadChoice(result.getValueDecl(), /*isBridged=*/true, /*isUnwrappedOptional=*/false)); diff --git a/stdlib/public/core/BridgeObjectiveC.swift b/stdlib/public/core/BridgeObjectiveC.swift index 7dc8996fbe1b4..4a06fc34028ce 100644 --- a/stdlib/public/core/BridgeObjectiveC.swift +++ b/stdlib/public/core/BridgeObjectiveC.swift @@ -658,7 +658,7 @@ extension Optional: _Unwrappable { } } -private let _foundationSwiftValueType = _typeByName("Foundation.__SwiftValue") as? _NSSwiftValue.Type +private let _foundationSwiftValueType = _typeByName("FoundationSoil.__SwiftValue") as? _NSSwiftValue.Type @usableFromInline internal var _nullPlaceholder: AnyObject { From 1308da46c9ac3e7d35c608c967e1941f0866ce05 Mon Sep 17 00:00:00 2001 From: Lily Vulcano Date: Wed, 2 Jan 2019 13:09:01 -0800 Subject: [PATCH 3/5] Rename FoundationSoil to FoundationBase. --- include/swift/AST/KnownIdentifiers.def | 4 ++-- include/swift/SIL/BridgedTypes.def | 10 +++++----- lib/AST/ASTContext.cpp | 4 ++-- lib/Sema/CSSimplify.cpp | 20 ++++++++++---------- stdlib/public/core/BridgeObjectiveC.swift | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/swift/AST/KnownIdentifiers.def b/include/swift/AST/KnownIdentifiers.def index 0f047caec7e6b..8bdf8afd059e8 100644 --- a/include/swift/AST/KnownIdentifiers.def +++ b/include/swift/AST/KnownIdentifiers.def @@ -60,8 +60,8 @@ IDENTIFIER(errorDomain) IDENTIFIER(forKeyedSubscript) IDENTIFIER(Foundation) IDENTIFIER(SwiftFoundation) -IDENTIFIER(FoundationSoil) -IDENTIFIER(SwiftFoundationSoil) +IDENTIFIER(FoundationBase) +IDENTIFIER(SwiftFoundationBase) IDENTIFIER(for) IDENTIFIER(forKey) IDENTIFIER(from) diff --git a/include/swift/SIL/BridgedTypes.def b/include/swift/SIL/BridgedTypes.def index e51b9e416d463..53ea09077f402 100644 --- a/include/swift/SIL/BridgedTypes.def +++ b/include/swift/SIL/BridgedTypes.def @@ -42,11 +42,11 @@ #define BRIDGE_TYPE(bmodule, btype, nmodule, ntype, opt) #endif -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSString) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSArray) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSDictionary) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSSet) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationSoil, SwiftFoundation, FoundationSoil, Foundation, NSError) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSString) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSArray) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSDictionary) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSSet) +BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSError) BRIDGING_KNOWN_TYPE(Swift, String) BRIDGING_KNOWN_TYPE(ObjectiveC, ObjCBool) BRIDGING_KNOWN_TYPE(ObjectiveC, Selector) diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index cb5073698ccce..79690c338b5ea 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -848,12 +848,12 @@ StructDecl *ASTContext::getObjCBoolDecl() const { #define GET_FOUNDATION_DECL(NAME) \ ClassDecl *ASTContext::get##NAME##Decl() const { \ if (!getImpl().NAME##Decl) { \ - ModuleDecl *M = getLoadedModule(Id_SwiftFoundationSoil); \ + ModuleDecl *M = getLoadedModule(Id_SwiftFoundationBase); \ if (!M) { \ M = getLoadedModule(Id_SwiftFoundation); \ } \ if (!M) { \ - M = getLoadedModule(Id_FoundationSoil); \ + M = getLoadedModule(Id_FoundationBase); \ } \ if (!M) { \ M = getLoadedModule(Id_Foundation); \ diff --git a/lib/Sema/CSSimplify.cpp b/lib/Sema/CSSimplify.cpp index 5244804268688..bb5d5653b85fa 100644 --- a/lib/Sema/CSSimplify.cpp +++ b/lib/Sema/CSSimplify.cpp @@ -3541,9 +3541,9 @@ performMemberLookup(ConstraintKind constraintKind, DeclName memberName, LookupResult &bridgedLookup = lookupMember(bridgedType, memberName); ModuleDecl *foundationModule = nullptr; - ModuleDecl *foundationSoilModule = nullptr; + ModuleDecl *FoundationBaseModule = nullptr; ModuleDecl *swiftFoundationModule = nullptr; - ModuleDecl *swiftFoundationSoilModule = nullptr; + ModuleDecl *swiftFoundationBaseModule = nullptr; for (auto result : bridgedLookup) { // Ignore results from the Objective-C "Foundation" @@ -3561,14 +3561,14 @@ performMemberLookup(ConstraintKind constraintKind, DeclName memberName, continue; } - if (foundationSoilModule) { - if (module == foundationSoilModule) + if (FoundationBaseModule) { + if (module == FoundationBaseModule) continue; } else if (ClangModuleUnit::hasClangModule(module) && - module->getName().str() == "FoundationSoil") { + module->getName().str() == "FoundationBase") { // Cache the foundation module name so we don't need to look // for it again. - foundationSoilModule = module; + FoundationBaseModule = module; continue; } @@ -3583,14 +3583,14 @@ performMemberLookup(ConstraintKind constraintKind, DeclName memberName, continue; } - if (swiftFoundationSoilModule) { - if (module == swiftFoundationSoilModule) + if (swiftFoundationBaseModule) { + if (module == swiftFoundationBaseModule) continue; } else if (ClangModuleUnit::hasClangModule(module) && - module->getName().str() == "SwiftFoundationSoil") { + module->getName().str() == "SwiftFoundationBase") { // Cache the foundation module name so we don't need to look // for it again. - swiftFoundationSoilModule = module; + swiftFoundationBaseModule = module; continue; } diff --git a/stdlib/public/core/BridgeObjectiveC.swift b/stdlib/public/core/BridgeObjectiveC.swift index 4a06fc34028ce..b773f533ded0b 100644 --- a/stdlib/public/core/BridgeObjectiveC.swift +++ b/stdlib/public/core/BridgeObjectiveC.swift @@ -658,7 +658,7 @@ extension Optional: _Unwrappable { } } -private let _foundationSwiftValueType = _typeByName("FoundationSoil.__SwiftValue") as? _NSSwiftValue.Type +private let _foundationSwiftValueType = _typeByName("FoundationBase.__SwiftValue") as? _NSSwiftValue.Type @usableFromInline internal var _nullPlaceholder: AnyObject { From 93034969e22f8ee7b5321210734bd8725477e010 Mon Sep 17 00:00:00 2001 From: Lily Vulcano Date: Tue, 8 Jan 2019 12:34:12 -0800 Subject: [PATCH 4/5] =?UTF-8?q?Remove=20the=20specialness=20from=20SwiftFo?= =?UTF-8?q?undationBase=20and=20SwiftFoundation=20re:=20bridged=20types.?= =?UTF-8?q?=20This=20isn=E2=80=99t=20great,=20but=20restores=20the=20funct?= =?UTF-8?q?ioning=20status=20quo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/swift/AST/KnownIdentifiers.def | 2 -- include/swift/SIL/BridgedTypes.def | 16 ++++++++-------- include/swift/SIL/TypeLowering.h | 4 ++-- lib/AST/ASTContext.cpp | 8 +------- lib/SIL/SILFunctionType.cpp | 16 +++------------- 5 files changed, 14 insertions(+), 32 deletions(-) diff --git a/include/swift/AST/KnownIdentifiers.def b/include/swift/AST/KnownIdentifiers.def index 8bdf8afd059e8..7d49cf21d0ace 100644 --- a/include/swift/AST/KnownIdentifiers.def +++ b/include/swift/AST/KnownIdentifiers.def @@ -59,9 +59,7 @@ IDENTIFIER(error) IDENTIFIER(errorDomain) IDENTIFIER(forKeyedSubscript) IDENTIFIER(Foundation) -IDENTIFIER(SwiftFoundation) IDENTIFIER(FoundationBase) -IDENTIFIER(SwiftFoundationBase) IDENTIFIER(for) IDENTIFIER(forKey) IDENTIFIER(from) diff --git a/include/swift/SIL/BridgedTypes.def b/include/swift/SIL/BridgedTypes.def index 53ea09077f402..496bb3132c9e3 100644 --- a/include/swift/SIL/BridgedTypes.def +++ b/include/swift/SIL/BridgedTypes.def @@ -34,19 +34,19 @@ #define BRIDGING_KNOWN_TYPE(module, type) #endif -#ifndef BRIDGING_KNOWN_TYPE_WITH_MODULES_4 -#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(module1, module2, module3, module4, type) +#ifndef BRIDGING_KNOWN_TYPE_WITH_MODULES_2 +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_2(module1, module2, type) #endif #ifndef BRIDGE_TYPE #define BRIDGE_TYPE(bmodule, btype, nmodule, ntype, opt) #endif -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSString) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSArray) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSDictionary) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSSet) -BRIDGING_KNOWN_TYPE_WITH_MODULES_4(SwiftFoundationBase, SwiftFoundation, FoundationBase, Foundation, NSError) +BRIDGING_KNOWN_TYPE_WITH_MODULES_2(FoundationBase, Foundation, NSString) +BRIDGING_KNOWN_TYPE_WITH_MODULES_2(FoundationBase, Foundation, NSArray) +BRIDGING_KNOWN_TYPE_WITH_MODULES_2(FoundationBase, Foundation, NSDictionary) +BRIDGING_KNOWN_TYPE_WITH_MODULES_2(FoundationBase, Foundation, NSSet) +BRIDGING_KNOWN_TYPE_WITH_MODULES_2(FoundationBase, Foundation, NSError) BRIDGING_KNOWN_TYPE(Swift, String) BRIDGING_KNOWN_TYPE(ObjectiveC, ObjCBool) BRIDGING_KNOWN_TYPE(ObjectiveC, Selector) @@ -59,4 +59,4 @@ BRIDGE_TYPE(Darwin, DarwinBoolean, Swift, Bool, false) #undef BRIDGING_KNOWN_TYPE #undef BRIDGE_TYPE -#undef BRIDGING_KNOWN_TYPE_WITH_MODULES_4 +#undef BRIDGING_KNOWN_TYPE_WITH_MODULES_2 diff --git a/include/swift/SIL/TypeLowering.h b/include/swift/SIL/TypeLowering.h index b1d7fe23d04e8..fdbe51324a56f 100644 --- a/include/swift/SIL/TypeLowering.h +++ b/include/swift/SIL/TypeLowering.h @@ -697,7 +697,7 @@ class TypeConverter { // Types converted during foreign bridging. #define BRIDGING_KNOWN_TYPE(BridgedModule,BridgedType) \ Optional BridgedType##Ty; -#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(_1, _2, _3, _4, BridgedType) \ +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_2(_1, _2, BridgedType) \ Optional BridgedType##Ty; #include "swift/SIL/BridgedTypes.def" @@ -952,7 +952,7 @@ class TypeConverter { /// Known types for bridging. #define BRIDGING_KNOWN_TYPE(BridgedModule,BridgedType) \ CanType get##BridgedType##Type(); -#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(_1, _2, _3, _4, BridgedType) \ +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_2(_1, _2, BridgedType) \ CanType get##BridgedType##Type(); #include "swift/SIL/BridgedTypes.def" diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 79690c338b5ea..2918ed067c043 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -848,13 +848,7 @@ StructDecl *ASTContext::getObjCBoolDecl() const { #define GET_FOUNDATION_DECL(NAME) \ ClassDecl *ASTContext::get##NAME##Decl() const { \ if (!getImpl().NAME##Decl) { \ - ModuleDecl *M = getLoadedModule(Id_SwiftFoundationBase); \ - if (!M) { \ - M = getLoadedModule(Id_SwiftFoundation); \ - } \ - if (!M) { \ - M = getLoadedModule(Id_FoundationBase); \ - } \ + ModuleDecl *M = getLoadedModule(Id_FoundationBase); \ if (!M) { \ M = getLoadedModule(Id_Foundation); \ } \ diff --git a/lib/SIL/SILFunctionType.cpp b/lib/SIL/SILFunctionType.cpp index 60d4ea5f86656..4d3840f9e36e9 100644 --- a/lib/SIL/SILFunctionType.cpp +++ b/lib/SIL/SILFunctionType.cpp @@ -173,9 +173,8 @@ static CanType getKnownType(Optional &cacheSlot, ASTContext &C, return t; } -static CanType getKnownTypeFromModules4(Optional &cacheSlot, ASTContext &C, +static CanType getKnownTypeFromModules2(Optional &cacheSlot, ASTContext &C, StringRef moduleName1, StringRef moduleName2, - StringRef moduleName3, StringRef moduleName4, StringRef typeName) { auto temporaryCacheSlot = Optional(); @@ -185,14 +184,6 @@ static CanType getKnownTypeFromModules4(Optional &cacheSlot, ASTContext temporaryCacheSlot = Optional(); T = getKnownType(temporaryCacheSlot, C, moduleName2, typeName); } - if (!T) { - temporaryCacheSlot = Optional(); - T = getKnownType(temporaryCacheSlot, C, moduleName3, typeName); - } - if (!T) { - temporaryCacheSlot = Optional(); - T = getKnownType(temporaryCacheSlot, C, moduleName4, typeName); - } cacheSlot = temporaryCacheSlot; return T; @@ -203,11 +194,10 @@ static CanType getKnownTypeFromModules4(Optional &cacheSlot, ASTContext return getKnownType(BridgedType##Ty, M.getASTContext(), \ #BridgedModule, #BridgedType); \ } -#define BRIDGING_KNOWN_TYPE_WITH_MODULES_4(BridgedModule1,BridgedModule2,BridgedModule3,BridgedModule4,BridgedType) \ +#define BRIDGING_KNOWN_TYPE_WITH_MODULES_2(BridgedModule1,BridgedModule2,BridgedType) \ CanType TypeConverter::get##BridgedType##Type() { \ - return getKnownTypeFromModules4(BridgedType##Ty, M.getASTContext(), \ + return getKnownTypeFromModules2(BridgedType##Ty, M.getASTContext(), \ #BridgedModule1, #BridgedModule2, \ - #BridgedModule3, #BridgedModule4, \ #BridgedType); \ } #include "swift/SIL/BridgedTypes.def" From 6b8f910c1797ceb3305ea232687cee7a18543be0 Mon Sep 17 00:00:00 2001 From: Lily Vulcano Date: Tue, 22 Jan 2019 09:47:41 -0800 Subject: [PATCH 5/5] Ensure this patch can be landed independently of the Swift Foundation patch. --- stdlib/public/core/BridgeObjectiveC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/public/core/BridgeObjectiveC.swift b/stdlib/public/core/BridgeObjectiveC.swift index b773f533ded0b..42de6b52c395e 100644 --- a/stdlib/public/core/BridgeObjectiveC.swift +++ b/stdlib/public/core/BridgeObjectiveC.swift @@ -658,7 +658,7 @@ extension Optional: _Unwrappable { } } -private let _foundationSwiftValueType = _typeByName("FoundationBase.__SwiftValue") as? _NSSwiftValue.Type +private let _foundationSwiftValueType = (_typeByName("FoundationBase.__SwiftValue") as? _NSSwiftValue.Type) ?? (_typeByName("Foundation.__SwiftValue") as? _NSSwiftValue.Type) @usableFromInline internal var _nullPlaceholder: AnyObject {