File tree Expand file tree Collapse file tree 2 files changed +32
-5
lines changed
validation-test/compiler_crashers_2_fixed Expand file tree Collapse file tree 2 files changed +32
-5
lines changed Original file line number Diff line number Diff line change @@ -2633,16 +2633,24 @@ void ArchetypeType::resolveNestedType(
26332633 Type interfaceType = getInterfaceType ();
26342634 Type memberInterfaceType =
26352635 DependentMemberType::get (interfaceType, nested.first );
2636- auto equivClass =
2637- builder.resolveEquivalenceClass (
2636+ auto resolved =
2637+ builder.maybeResolveEquivalenceClass (
26382638 memberInterfaceType,
2639- ArchetypeResolutionKind::CompleteWellFormed);
2640- if (!equivClass) {
2639+ ArchetypeResolutionKind::CompleteWellFormed,
2640+ /* wantExactPotentialArchetype=*/ false );
2641+ if (!resolved) {
26412642 nested.second = ErrorType::get (interfaceType);
26422643 return ;
26432644 }
26442645
2645- auto result = equivClass->getTypeInContext (builder, genericEnv);
2646+ Type result;
2647+ if (auto concrete = resolved.getAsConcreteType ()) {
2648+ result = concrete;
2649+ } else {
2650+ auto *equivClass = resolved.getEquivalenceClass (builder);
2651+ result = equivClass->getTypeInContext (builder, genericEnv);
2652+ }
2653+
26462654 assert (!nested.second ||
26472655 nested.second ->isEqual (result) ||
26482656 (nested.second ->hasError () && result->hasError ()));
Original file line number Diff line number Diff line change 1+ // RUN: %target-swift-frontend -typecheck %s
2+
3+ // https://bugs.swift.org/browse/SR-13519
4+
5+ class Class : P {
6+ typealias A = Bool
7+ }
8+
9+ protocol P {
10+ associatedtype A
11+ }
12+
13+ protocol Q : P {
14+ func takesA( arg: A )
15+ }
16+
17+ func test< T: Class & Q > ( arg: T ) {
18+ arg. takesA ( arg: true )
19+ }
You can’t perform that action at this time.
0 commit comments