@@ -123,6 +123,8 @@ using type2 = typename C<int>::type1<void>;
123123// CHECK-NEXT: TemplateArgument type 'void'
124124// CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'void'
125125// CHECK-NEXT: FunctionProtoType 0x{{[^ ]*}} 'void (int)' cdecl
126+ // CHECK-NEXT: SubstTemplateTypeParmType 0x{{[^ ]*}} 'void' sugar class depth 0 index 0 U final
127+ // CHECK-NEXT: TypeAliasTemplate 0x{{[^ ]*}} 'type1'
126128// CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'void'
127129// CHECK-NEXT: SubstTemplateTypeParmType 0x{{[^ ]*}} 'int' sugar class depth 0 index 0 T
128130// CHECK-NEXT: ClassTemplateSpecialization 0x{{[^ ]*}} 'C'
@@ -139,14 +141,14 @@ template struct D<float, char>::bind<int, short>;
139141// CHECK: TypeAliasDecl 0x{{[^ ]*}} <line:{{[1-9]+}}:5, col:45> col:11 bound_type 'int (int (*)(float, int), int (*)(char, short))'
140142// CHECK: FunctionProtoType 0x{{[^ ]*}} 'int (int (*)(float, int), int (*)(char, short))' cdecl
141143// CHECK: FunctionProtoType 0x{{[^ ]*}} 'int (float, int)' cdecl
142- // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'float' sugar typename depth 0 index 0 ... T pack_index 1
144+ // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'float' sugar typename depth 0 index 0 ... T pack_index 1{{$}}
143145// CHECK-NEXT: ClassTemplateSpecialization 0x{{[^ ]*}} 'D'
144- // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'int' sugar typename depth 0 index 0 ... U pack_index 1
146+ // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'int' sugar typename depth 0 index 0 ... U pack_index 1{{$}}
145147// CHECK-NEXT: ClassTemplateSpecialization 0x{{[^ ]*}} 'bind'
146148// CHECK: FunctionProtoType 0x{{[^ ]*}} 'int (char, short)' cdecl
147- // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'char' sugar typename depth 0 index 0 ... T pack_index 0
149+ // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'char' sugar typename depth 0 index 0 ... T pack_index 0{{$}}
148150// CHECK-NEXT: ClassTemplateSpecialization 0x{{[^ ]*}} 'D'
149- // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'short' sugar typename depth 0 index 0 ... U pack_index 0
151+ // CHECK: SubstTemplateTypeParmType 0x{{[^ ]*}} 'short' sugar typename depth 0 index 0 ... U pack_index 0{{$}}
150152// CHECK-NEXT: ClassTemplateSpecialization 0x{{[^ ]*}} 'bind'
151153} // namespace PR56099
152154
@@ -156,12 +158,16 @@ template<template<class C1, class C2 = A<C1>> class D1, class D2> using D = D1<D
156158
157159template <class E1 , class E2 > class E {};
158160using test1 = D<E, int >;
159- // CHECK: TypeAliasDecl 0x{{[^ ]*}} <line:{{[1 -9]+}}:1, col:23> col:7 test1 'D<E, int>':'subst_default_argument::E<int, subst_default_argument::A<int>>'
161+ // CHECK: TypeAliasDecl 0x{{[^ ]*}} <line:{{[0 -9]+}}:1, col:23> col:7 test1 'D<E, int>':'subst_default_argument::E<int, subst_default_argument::A<int>>'
160162// CHECK: TemplateSpecializationType 0x{{[^ ]*}} 'A<int>' sugar
161163// CHECK-NEXT: |-name: 'A':'subst_default_argument::A' qualified
162164// CHECK-NEXT: | `-ClassTemplateDecl {{.+}} A
163165// CHECK-NEXT: |-TemplateArgument type 'int'
164- // CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'int'
166+ // CHECK-NEXT: | `-SubstTemplateTypeParmType 0x{{[^ ]*}} 'int' sugar class depth 0 index 0 E1 final
167+ // CHECK-NEXT: | |-ClassTemplate 0x{{[^ ]*}} 'E'
168+ // CHECK-NEXT: | `-SubstTemplateTypeParmType 0x{{[^ ]*}} 'int' sugar class depth 0 index 1 D2 final
169+ // CHECK-NEXT: | |-TypeAliasTemplate 0x{{[^ ]*}} 'D'
170+ // CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'int'
165171// CHECK-NEXT: `-RecordType 0x{{[^ ]*}} 'subst_default_argument::A<int>'
166172// CHECK-NEXT: `-ClassTemplateSpecialization 0x{{[^ ]*}} 'A'
167173} // namespace subst_default_argument
0 commit comments