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