@@ -6864,30 +6864,11 @@ void SwiftDeclConverter::addObjCProtocolConformances(
6864
6864
6865
6865
Impl.recordImportedProtocols (decl, protocols);
6866
6866
6867
- // Synthesize trivial conformances for each of the protocols.
6868
- SmallVector<ProtocolConformance *, 4 > conformances;
6869
-
6870
- auto dc = decl->getInnermostDeclContext ();
6871
- auto &ctx = Impl.SwiftContext ;
6872
- for (unsigned i = 0 , n = protocols.size (); i != n; ++i) {
6873
- // FIXME: Build a superclass conformance if the superclass
6874
- // conforms.
6875
- auto conformance = ctx.getConformance (dc->getDeclaredInterfaceType (),
6876
- protocols[i], SourceLoc (), dc,
6877
- ProtocolConformanceState::Incomplete);
6878
- conformance->setLazyLoader (&Impl, /* context*/ 0 );
6879
- conformance->setState (ProtocolConformanceState::Complete);
6880
- conformances.push_back (conformance);
6881
- }
6882
-
6883
- // Set the conformances.
6884
- // FIXME: This could be lazier.
6885
- unsigned id = Impl.allocateDelayedConformance (std::move (conformances));
6886
6867
if (auto nominal = dyn_cast<NominalTypeDecl>(decl)) {
6887
- nominal->setConformanceLoader (&Impl, id );
6868
+ nominal->setConformanceLoader (&Impl, 0 );
6888
6869
} else {
6889
6870
auto ext = cast<ExtensionDecl>(decl);
6890
- ext->setConformanceLoader (&Impl, id );
6871
+ ext->setConformanceLoader (&Impl, 0 );
6891
6872
}
6892
6873
}
6893
6874
@@ -8690,7 +8671,7 @@ void ClangImporter::Implementation::collectMembersToAdd(
8690
8671
8691
8672
SwiftDeclConverter converter (*this , CurrentVersion);
8692
8673
8693
- SmallVector<ProtocolDecl *, 4 > protos = takeImportedProtocols (D);
8674
+ auto protos = getImportedProtocols (D);
8694
8675
if (auto clangClass = dyn_cast<clang::ObjCInterfaceDecl>(objcContainer)) {
8695
8676
auto swiftClass = cast<ClassDecl>(D);
8696
8677
objcContainer = clangClass = clangClass->getDefinition ();
@@ -8713,9 +8694,22 @@ void ClangImporter::Implementation::collectMembersToAdd(
8713
8694
}
8714
8695
8715
8696
void ClangImporter::Implementation::loadAllConformances (
8716
- const Decl *D , uint64_t contextData,
8697
+ const Decl *decl , uint64_t contextData,
8717
8698
SmallVectorImpl<ProtocolConformance *> &Conformances) {
8718
- Conformances = takeDelayedConformance (contextData);
8699
+ auto dc = decl->getInnermostDeclContext ();
8700
+
8701
+ // Synthesize trivial conformances for each of the protocols.
8702
+ for (auto *protocol : getImportedProtocols (decl)) {
8703
+ // FIXME: Build a superclass conformance if the superclass
8704
+ // conforms.
8705
+ auto conformance = SwiftContext.getConformance (
8706
+ dc->getDeclaredInterfaceType (),
8707
+ protocol, SourceLoc (), dc,
8708
+ ProtocolConformanceState::Incomplete);
8709
+ conformance->setLazyLoader (this , /* context*/ 0 );
8710
+ conformance->setState (ProtocolConformanceState::Complete);
8711
+ Conformances.push_back (conformance);
8712
+ }
8719
8713
}
8720
8714
8721
8715
Optional<MappedTypeNameKind>
0 commit comments