Skip to content

Commit 4ffe0aa

Browse files
committed
Add unit test for nested template class instantiations
Signed-off-by: Roberto Raggi <[email protected]>
1 parent 0feb61f commit 4ffe0aa

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// RUN: %cxx -fcheck -dump-symbols %s | %filecheck %s
2+
3+
template <typename T>
4+
struct Outer {
5+
template <typename U>
6+
struct Inner {
7+
T t;
8+
U u;
9+
};
10+
};
11+
12+
template struct Outer<float>;
13+
14+
template struct Outer<int>::Inner<char>;
15+
16+
// clang-format off
17+
// CHECK:namespace
18+
// CHECK-NEXT: template class Outer<type-param<0, 0>>
19+
// CHECK-NEXT: parameter typename<0, 0> T
20+
// CHECK-NEXT: template class Inner<type-param<0, 1>>
21+
// CHECK-NEXT: parameter typename<0, 1> U
22+
// CHECK-NEXT: field type-param<0, 0> t
23+
// CHECK-NEXT: field type-param<0, 1> u
24+
// CHECK-NEXT: [specializations]
25+
// CHECK-NEXT: class Outer<float>
26+
// CHECK-NEXT: template class Inner<type-param<0, 1>>
27+
// CHECK-NEXT: parameter typename<0, 1> U
28+
// CHECK-NEXT: field float t
29+
// CHECK-NEXT: field type-param<0, 1> u
30+
// CHECK-NEXT: class Outer<int>
31+
// CHECK-NEXT: template class Inner<type-param<0, 1>>
32+
// CHECK-NEXT: parameter typename<0, 1> U
33+
// CHECK-NEXT: field int t
34+
// CHECK-NEXT: field type-param<0, 1> u
35+
// CHECK-NEXT: [specializations]
36+
// CHECK-NEXT: class Inner<char>
37+
// CHECK-NEXT: field int t
38+
// CHECK-NEXT: field char u

0 commit comments

Comments
 (0)