Skip to content

Commit 35cc2d6

Browse files
committed
[AST] Desugar associated types in ProtocolConformance::dump.
Otherwise, since typealiases are used so often, one ends up with dumps that say nothing new/useful: (normal_conformance type=X protocol=P (assoc_type req=A type=X.A))
1 parent 835c2c9 commit 35cc2d6

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

lib/AST/ASTDumper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2857,7 +2857,7 @@ static void dumpProtocolConformanceRec(
28572857
out.indent(indent + 2);
28582858
PrintWithColorRAII(out, ParenthesisColor) << '(';
28592859
out << "assoc_type req=" << req->getName() << " type=";
2860-
PrintWithColorRAII(out, TypeColor) << ty;
2860+
PrintWithColorRAII(out, TypeColor) << Type(ty->getDesugaredType());
28612861
PrintWithColorRAII(out, ParenthesisColor) << ')';
28622862
return false;
28632863
});

test/Driver/debug-generic-signatures.swift

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protocol P3 {
3333

3434
// CHECK-LABEL: StructDecl name=Basic
3535
// CHECK: (normal_conformance type=Basic protocol=P1
36-
// CHECK-NEXT: (assoc_type req=A type=Basic.A)
36+
// CHECK-NEXT: (assoc_type req=A type=Int)
3737
// CHECK-NEXT: (value req=f() witness=main.(file).Basic.f()@{{.*}}))
3838
struct Basic: P1 {
3939
typealias A = Int
@@ -44,8 +44,8 @@ struct Basic: P1 {
4444

4545
// CHECK-LABEL: StructDecl name=Recur
4646
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2
47-
// CHECK-NEXT: (assoc_type req=A type=Recur.A)
48-
// CHECK-NEXT: (assoc_type req=B type=Recur.B)
47+
// CHECK-NEXT: (assoc_type req=A type=Recur)
48+
// CHECK-NEXT: (assoc_type req=B type=Recur)
4949
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above))
5050
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above)))
5151
struct Recur: P2 {
@@ -57,11 +57,11 @@ struct Recur: P2 {
5757

5858
// CHECK-LABEL: StructDecl name=NonRecur
5959
// CHECK-NEXT: (normal_conformance type=NonRecur protocol=P2
60-
// CHECK-NEXT: (assoc_type req=A type=NonRecur.A)
61-
// CHECK-NEXT: (assoc_type req=B type=NonRecur.B)
60+
// CHECK-NEXT: (assoc_type req=A type=Recur)
61+
// CHECK-NEXT: (assoc_type req=B type=Recur)
6262
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2
63-
// CHECK-NEXT: (assoc_type req=A type=Recur.A)
64-
// CHECK-NEXT: (assoc_type req=B type=Recur.B)
63+
// CHECK-NEXT: (assoc_type req=A type=Recur)
64+
// CHECK-NEXT: (assoc_type req=B type=Recur)
6565
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above))
6666
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above)))
6767
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above)))
@@ -75,7 +75,7 @@ struct NonRecur: P2 {
7575
struct Generic<T> {}
7676
// CHECK-LABEL: ExtensionDecl line={{.*}} base=Generic<T>
7777
// CHECK-NEXT: (normal_conformance type=Generic<T> protocol=P1
78-
// CHECK-NEXT: (assoc_type req=A type=Generic<T>.A)
78+
// CHECK-NEXT: (assoc_type req=A type=T)
7979
// CHECK-NEXT: (value req=f() witness=main.(file).Generic.f()@{{.*}})
8080
// CHECK-NEXT: conforms_to: T P1)
8181
extension Generic: P1 where T: P1 {
@@ -88,8 +88,8 @@ extension Generic: P1 where T: P1 {
8888
class Super<T, U> {}
8989
// CHECK-LABEL: ExtensionDecl line={{.*}} base=Super<T, U>
9090
// CHECK-NEXT: (normal_conformance type=Super<T, U> protocol=P2
91-
// CHECK-NEXT: (assoc_type req=A type=Super<T, U>.A)
92-
// CHECK-NEXT: (assoc_type req=B type=Super<T, U>.B)
91+
// CHECK-NEXT: (assoc_type req=A type=T)
92+
// CHECK-NEXT: (assoc_type req=B type=T)
9393
// CHECK-NEXT: (abstract_conformance protocol=P2)
9494
// CHECK-NEXT: (abstract_conformance protocol=P2)
9595
// CHECK-NEXT: conforms_to: T P2
@@ -108,11 +108,11 @@ extension Super: P2 where T: P2, U: P2 {
108108
// CHECK-NEXT: (substitution U -> Recur)
109109
// CHECK-NEXT: (conformance type=T
110110
// CHECK-NEXT: (normal_conformance type=NonRecur protocol=P2
111-
// CHECK-NEXT: (assoc_type req=A type=NonRecur.A)
112-
// CHECK-NEXT: (assoc_type req=B type=NonRecur.B)
111+
// CHECK-NEXT: (assoc_type req=A type=Recur)
112+
// CHECK-NEXT: (assoc_type req=B type=Recur)
113113
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2
114-
// CHECK-NEXT: (assoc_type req=A type=Recur.A)
115-
// CHECK-NEXT: (assoc_type req=B type=Recur.B)
114+
// CHECK-NEXT: (assoc_type req=A type=Recur)
115+
// CHECK-NEXT: (assoc_type req=B type=Recur)
116116
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above))
117117
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above)))
118118
// CHECK-NEXT: (normal_conformance type=Recur protocol=P2 (details printed above))))
@@ -121,8 +121,8 @@ extension Super: P2 where T: P2, U: P2 {
121121
// CHECK-NEXT: conforms_to: NonRecur P2
122122
// CHECK-NEXT: conforms_to: Recur P2
123123
// CHECK-NEXT: (normal_conformance type=Super<T, U> protocol=P2
124-
// CHECK-NEXT: (assoc_type req=A type=Super<T, U>.A)
125-
// CHECK-NEXT: (assoc_type req=B type=Super<T, U>.B)
124+
// CHECK-NEXT: (assoc_type req=A type=T)
125+
// CHECK-NEXT: (assoc_type req=B type=T)
126126
// CHECK-NEXT: (abstract_conformance protocol=P2)
127127
// CHECK-NEXT: (abstract_conformance protocol=P2)
128128
// CHECK-NEXT: conforms_to: T P2
@@ -134,22 +134,22 @@ class Sub: Super<NonRecur, Recur> {}
134134

135135
// CHECK-LABEL: StructDecl name=RecurGeneric
136136
// CHECK-NEXT: (normal_conformance type=RecurGeneric<T> protocol=P3
137-
// CHECK-NEXT: (assoc_type req=A type=RecurGeneric<T>.A)
137+
// CHECK-NEXT: (assoc_type req=A type=RecurGeneric<T>)
138138
// CHECK-NEXT: (normal_conformance type=RecurGeneric<T> protocol=P3 (details printed above)))
139139
struct RecurGeneric<T: P3>: P3 {
140140
typealias A = RecurGeneric<T>
141141
}
142142

143143
// CHECK-LABEL: StructDecl name=Specialize
144144
// CHECK-NEXT: (normal_conformance type=Specialize protocol=P3
145-
// CHECK-NEXT: (assoc_type req=A type=Specialize.A)
145+
// CHECK-NEXT: (assoc_type req=A type=RecurGeneric<Specialize>)
146146
// CHECK-NEXT: (specialized_conformance type=Specialize.A protocol=P3
147147
// CHECK-NEXT: (substitution_map generic_signature=<T where T : P3>
148148
// CHECK-NEXT: (substitution T -> Specialize)
149149
// CHECK-NEXT: (conformance type=T
150150
// CHECK-NEXT: (normal_conformance type=Specialize protocol=P3 (details printed above))))
151151
// CHECK-NEXT: (normal_conformance type=RecurGeneric<T> protocol=P3
152-
// CHECK-NEXT: (assoc_type req=A type=RecurGeneric<T>.A)
152+
// CHECK-NEXT: (assoc_type req=A type=RecurGeneric<T>)
153153
// CHECK-NEXT: (normal_conformance type=RecurGeneric<T> protocol=P3 (details printed above)))))
154154
struct Specialize: P3 {
155155
typealias A = RecurGeneric<Specialize>

0 commit comments

Comments
 (0)