Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
      2 // RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class -Wmissing-selector-name %s
      3 // rdar://12263549
      4 
      5 @interface Super @end
      6 @interface INTF : Super
      7 -(void) Name1:(id)Arg1 Name2:(id)Arg2; // Name1:Name2:
      8 -(void) Name1:(id) Name2:(id)Arg2; // expected-warning {{'Name2' used as the name of the previous parameter rather than as part of the selector}} \
      9 				   // expected-note {{introduce a parameter name to make 'Name2' part of the selector}} \
     10 				   // expected-note {{or insert whitespace before ':' to use 'Name2' as parameter name and have an empty entry in the selector}}
     11 -(void) Name1:(id)Arg1 Name2:(id)Arg2 Name3:(id)Arg3; // Name1:Name2:Name3:
     12 -(void) Name1:(id)Arg1 Name2:(id) Name3:(id)Arg3; // expected-warning {{'Name3' used as the name of the previous parameter rather than as part of the selector}} \
     13 				   // expected-note {{introduce a parameter name to make 'Name3' part of the selector}} \
     14 				   // expected-note {{or insert whitespace before ':' to use 'Name3' as parameter name and have an empty entry in the selector}}
     15 - method:(id) second:(id)second; // expected-warning {{'second' used as the name of the previous parameter rather than as part of the selector}} \
     16 				   // expected-note {{introduce a parameter name to make 'second' part of the selector}} \
     17 				   // expected-note {{or insert whitespace before ':' to use 'second' as parameter name and have an empty entry in the selector}} \
     18 				   // expected-note {{method 'method::' declared here}}
     19                                  
     20 @end
     21 
     22 @implementation INTF // expected-warning {{method definition for 'method::' not found}}
     23 -(void) Name1:(id)Arg1 Name2:(id)Arg2{}
     24 -(void) Name1:(id) Name2:(id)Arg2 {} // expected-warning {{'Name2' used as the name of the previous parameter rather than as part of the selector}} \
     25 					// expected-note {{introduce a parameter name to make 'Name2' part of the selector}} \
     26  					// expected-note {{or insert whitespace before ':' to use 'Name2' as parameter name and have an empty entry in the selector}}
     27 -(void) Name1:(id)Arg1 Name2:(id)Arg2 Name3:(id)Arg3 {}
     28 -(void) Name1:(id)Arg1 Name2:(id) Name3:(id)Arg3 {} // expected-warning {{'Name3' used as the name of the previous parameter rather than as part of the selector}} \
     29 					// expected-note {{introduce a parameter name to make 'Name3' part of the selector}} \
     30  					// expected-note {{or insert whitespace before ':' to use 'Name3' as parameter name and have an empty entry in the selector}}
     31 - method:(id)first second:(id)second {return 0; }
     32 @end
     33