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(
2633
2633
Type interfaceType = getInterfaceType ();
2634
2634
Type memberInterfaceType =
2635
2635
DependentMemberType::get (interfaceType, nested.first );
2636
- auto equivClass =
2637
- builder.resolveEquivalenceClass (
2636
+ auto resolved =
2637
+ builder.maybeResolveEquivalenceClass (
2638
2638
memberInterfaceType,
2639
- ArchetypeResolutionKind::CompleteWellFormed);
2640
- if (!equivClass) {
2639
+ ArchetypeResolutionKind::CompleteWellFormed,
2640
+ /* wantExactPotentialArchetype=*/ false );
2641
+ if (!resolved) {
2641
2642
nested.second = ErrorType::get (interfaceType);
2642
2643
return ;
2643
2644
}
2644
2645
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
+
2646
2654
assert (!nested.second ||
2647
2655
nested.second ->isEqual (result) ||
2648
2656
(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