xref: /llvm-project/clang/test/Index/USR/structural-value-tpl-arg.cpp (revision 5518a9d7673bfe55b4110bea049140316d032fbf)
1 // RUN: c-index-test -test-load-source-usrs local -std=c++20 -- %s | FileCheck %s
2 
3 // Check USRs of template specializations with structural NTTP values.
4 
5 template <auto> struct Tpl{};
6 
7 struct {
8   int n;
9 } s;
10 
11 void fn1(Tpl<1.5>);
12 // CHECK: fn1#$@S@Tpl>#Sd[[#HASH:]]#
13 void fn2(Tpl<1.7>);
14 // CHECK-NOT: [[#HASH]]
fn1(Tpl<1.5>)15 void fn1(Tpl<1.5>) {}
16 // CHECK: fn1#$@S@Tpl>#Sd[[#HASH]]#
17 
18 void fn(Tpl<&s.n>);
19 // CHECK: #S*I[[#HASH:]]#
20 void fn(Tpl<(void*)&s.n>);
21 // CHECK: #S*v[[#HASH]]#
fn(Tpl<& s.n>)22 void fn(Tpl<&s.n>) {}
23 // CHECK: #S*I[[#HASH]]#
24