xref: /llvm-project/clang/test/Index/USR/func-type.cpp (revision 71b9f6648222771470473431bc8ef2a2c25e872c)
1 // RUN: c-index-test core -print-source-symbols -- %s | FileCheck %s
2 
3 // Functions taking function pointer parameters with different signatures should result in unique USRs.
4 
5 typedef void (*_VoidToVoidPtr_)();
6 typedef void (*_IntToVoidPtr_)( int );
7 typedef _VoidToVoidPtr_ (*IntTo_VoidToVoidPtr_Ptr)( int );
8 typedef _IntToVoidPtr_ (*VoidTo_IntToVoidPtr_Ptr)();
9 
10 void Func( IntTo_VoidToVoidPtr_Ptr );
11 // CHECK: {{[0-9]+}}:6 | function/C | Func | c:@F@Func#*F*Fv()(#I)# |
12 void Func( VoidTo_IntToVoidPtr_Ptr );
13 // CHECK: {{[0-9]+}}:6 | function/C | Func | c:@F@Func#*F*Fv(#I)()# |
14 
15 void Func( void (* (*)(int, int))(int, int) );
16 // CHECK: {{[0-9]+}}:6 | function/C | Func | c:@F@Func#*F*Fv(#I#I)(#I#I)# |
17 void Func( void (* (*)(int, int, int))(int) );
18 // CHECK: {{[0-9]+}}:6 | function/C | Func | c:@F@Func#*F*Fv(#I)(#I#I#I)# |
19 
20 // Functions with parameter types that only differ in top-level cv-qualification should generate the same USR.
21 
22 void f( const int );
23 // CHECK: {{[0-9]+}}:6 | function/C | f | c:@F@f#I# |
24 void f( int );
25 // CHECK: {{[0-9]+}}:6 | function/C | f | c:@F@f#I# |
26 
27 void g( int );
28 // CHECK: {{[0-9]+}}:6 | function/C | g | c:@F@g#I# |
29 void g( const int );
30 // CHECK: {{[0-9]+}}:6 | function/C | g | c:@F@g#I# |
31