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