| 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 | |