File tree Expand file tree Collapse file tree 2 files changed +14
-1
lines changed
test/Serialization/Recovery Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -3517,7 +3517,9 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
35173517 for (auto element : proto->getInherited ()) {
35183518 auto elementType = element.getType ();
35193519 assert (!elementType || !elementType->hasArchetype ());
3520- if (elementType && elementType->is <ProtocolType>())
3520+ if (elementType &&
3521+ (elementType->is <ProtocolType>() ||
3522+ elementType->is <ProtocolCompositionType>()))
35213523 dependencyTypes.insert (elementType);
35223524 }
35233525
Original file line number Diff line number Diff line change @@ -43,6 +43,8 @@ public protocol HiddenProtocol {
4343 associatedtype Value
4444}
4545
46+ public protocol HiddenProtocol2 { }
47+
4648public protocol HiddenProtocolWithOverride {
4749 func hiddenOverride( )
4850}
@@ -98,6 +100,15 @@ public class SomeClass {
98100 func funcUsingIoiType( _ a: HiddenClass ) { }
99101}
100102
103+ // Check that we recover from a reference to an implementation-only
104+ // imported type in a protocol composition. rdar://78631465
105+ protocol CompositionMemberInheriting : HiddenProtocol2 { }
106+ protocol CompositionMemberSimple { }
107+ protocol InheritingFromComposition : CompositionMemberInheriting & CompositionMemberSimple { }
108+ struct StructInheritingFromComposition : CompositionMemberInheriting & CompositionMemberSimple { }
109+ class ClassInheritingFromComposition : CompositionMemberInheriting & CompositionMemberSimple { }
110+ protocol InheritingFromCompositionDirect : CompositionMemberSimple & HiddenProtocol2 { }
111+
101112#elseif CLIENT_APP
102113
103114import public_lib
You can’t perform that action at this time.
0 commit comments