Clang Project

clang_source_code/test/Templight/templight-nested-template-instantiation.cpp
1// RUN: %clang_cc1 -templight-dump %s 2>&1 | FileCheck %s
2
3template <int N>
4struct foo : foo<N - 1> {};
5
6template <>
7struct foo<0> {};
8
9// CHECK-LABEL: {{^---$}}
10// CHECK: {{^name:[ ]+'foo<2>'$}}
11// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
12// CHECK: {{^event:[ ]+Begin$}}
13// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
14// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
15// CHECK-LABEL: {{^---$}}
16// CHECK: {{^name:[ ]+'foo<2>'$}}
17// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
18// CHECK: {{^event:[ ]+End$}}
19// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
20// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
21// CHECK-LABEL: {{^---$}}
22// CHECK: {{^name:[ ]+'foo<2>'$}}
23// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
24// CHECK: {{^event:[ ]+Begin$}}
25// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
26// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
27//
28// CHECK-LABEL: {{^---$}}
29// CHECK: {{^name:[ ]+'foo<1>'$}}
30// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
31// CHECK: {{^event:[ ]+Begin$}}
32// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
33// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
34// CHECK-LABEL: {{^---$}}
35// CHECK: {{^name:[ ]+'foo<1>'$}}
36// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
37// CHECK: {{^event:[ ]+End$}}
38// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
39// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
40// CHECK-LABEL: {{^---$}}
41// CHECK: {{^name:[ ]+'foo<1>'$}}
42// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
43// CHECK: {{^event:[ ]+Begin$}}
44// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
45// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
46//
47// CHECK-LABEL: {{^---$}}
48// CHECK: {{^name:[ ]+'foo<0>'$}}
49// CHECK: {{^kind:[ ]+Memoization$}}
50// CHECK: {{^event:[ ]+Begin$}}
51// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:7:8'}}
52// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
53// CHECK-LABEL: {{^---$}}
54// CHECK: {{^name:[ ]+'foo<0>'$}}
55// CHECK: {{^kind:[ ]+Memoization$}}
56// CHECK: {{^event:[ ]+End$}}
57// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:7:8'}}
58// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
59//
60// CHECK-LABEL: {{^---$}}
61// CHECK: {{^name:[ ]+'foo<1>'$}}
62// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
63// CHECK: {{^event:[ ]+End$}}
64// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
65// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
66// CHECK-LABEL: {{^---$}}
67// CHECK: {{^name:[ ]+'foo<1>'$}}
68// CHECK: {{^kind:[ ]+Memoization$}}
69// CHECK: {{^event:[ ]+Begin$}}
70// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
71// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
72// CHECK-LABEL: {{^---$}}
73// CHECK: {{^name:[ ]+'foo<1>'$}}
74// CHECK: {{^kind:[ ]+Memoization$}}
75// CHECK: {{^event:[ ]+End$}}
76// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
77// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
78// CHECK-LABEL: {{^---$}}
79// CHECK: {{^name:[ ]+'foo<2>'$}}
80// CHECK: {{^kind:[ ]+TemplateInstantiation$}}
81// CHECK: {{^event:[ ]+End$}}
82// CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
83// CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
84foo<2> x;
85