| // RUN: %clang_cc1 -templight-dump %s 2>&1 | FileCheck %s | 
 |  | 
 | template <int N> | 
 | struct foo : foo<N - 1> {}; | 
 |  | 
 | template <> | 
 | struct foo<0> {}; | 
 |  | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<2>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+Begin$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<2>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+End$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<2>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+Begin$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}} | 
 | // | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<1>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+Begin$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<1>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+End$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<1>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+Begin$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<0>'$}} | 
 | // CHECK: {{^kind:[ ]+Memoization$}} | 
 | // CHECK: {{^event:[ ]+Begin$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:7:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<0>'$}} | 
 | // CHECK: {{^kind:[ ]+Memoization$}} | 
 | // CHECK: {{^event:[ ]+End$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:7:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<1>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+End$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<1>'$}} | 
 | // CHECK: {{^kind:[ ]+Memoization$}} | 
 | // CHECK: {{^event:[ ]+Begin$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<1>'$}} | 
 | // CHECK: {{^kind:[ ]+Memoization$}} | 
 | // CHECK: {{^event:[ ]+End$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}} | 
 | // CHECK-LABEL: {{^---$}} | 
 | // CHECK: {{^name:[ ]+'foo<2>'$}} | 
 | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
 | // CHECK: {{^event:[ ]+End$}} | 
 | // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}} | 
 | // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}} | 
 | foo<2> x; |