From: Fariborz Jahanian Date: Thu, 21 Jun 2012 18:43:08 +0000 (+0000) Subject: objective-c: deprecated C-like parameters in Objective-C X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=56242baaae6c45b24fbdd5bc56fe4ee516fa9e6b;p=clang objective-c: deprecated C-like parameters in Objective-C method declarations. // rdar://11578353. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158929 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index ab3bf7ed45..a0e4ef958e 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -339,6 +339,9 @@ def err_illegal_super_cast : Error< "cannot cast 'super' (it isn't an expression)">; def err_nsnumber_nonliteral_unary : Error< "@%0 must be followed by a number to form an NSNumber object">; +def warn_cstyle_param : Warning< + "use of C-style parameters in Objective-C method declarations" + " is deprecated">, InGroup; let CategoryName = "ARC Parse Issue" in { def err_arc_bridge_retain : Error< diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp index d3016c7c15..b96a8dde9f 100644 --- a/lib/Parse/ParseObjc.cpp +++ b/lib/Parse/ParseObjc.cpp @@ -1106,7 +1106,7 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, } bool isVariadic = false; - + bool cStyleParamWarned = false; // Parse the (optional) parameter list. while (Tok.is(tok::comma)) { ConsumeToken(); @@ -1115,6 +1115,10 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, ConsumeToken(); break; } + if (!cStyleParamWarned) { + Diag(Tok, diag::warn_cstyle_param); + cStyleParamWarned = true; + } DeclSpec DS(AttrFactory); ParseDeclarationSpecifiers(DS); // Parse the declarator. @@ -1126,7 +1130,6 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, ParmDecl.getIdentifierLoc(), Param, 0)); - } // FIXME: Add support for optional parameter list... diff --git a/test/SemaObjC/method-prototype-scope.m b/test/SemaObjC/method-prototype-scope.m index 0bebd9b029..c581500d02 100644 --- a/test/SemaObjC/method-prototype-scope.m +++ b/test/SemaObjC/method-prototype-scope.m @@ -7,7 +7,7 @@ int object; @class NSString, NSArray; @interface Test -- Func:(int)XXXX, id object; +- Func:(int)XXXX, id object; // expected-warning {{use of C-style parameters in Objective-C method declarations is deprecated}} - doSomethingElseWith:(id)object; @@ -23,7 +23,7 @@ int object; return object; // expected-warning {{incompatible pointer types returning 'NSArray *' from a function with result type 'NSString *'}} } -- Func:(int)XXXX, id object { return object; } +- Func:(int)XXXX, id object { return object; } // expected-warning {{use of C-style parameters in Objective-C method declarations is deprecated}} - doSomethingElseWith:(id)object { return object; } diff --git a/test/SemaObjC/mismatched-undefined-method.m b/test/SemaObjC/mismatched-undefined-method.m index 936e892020..c41d142a40 100644 --- a/test/SemaObjC/mismatched-undefined-method.m +++ b/test/SemaObjC/mismatched-undefined-method.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-declarations -verify %s // rdar://11460990 typedef unsigned int CGDirectDisplayID; diff --git a/test/SemaObjC/objc-cstyle-args-in-methods.m b/test/SemaObjC/objc-cstyle-args-in-methods.m index d37b5897b1..ebc7192f0f 100644 --- a/test/SemaObjC/objc-cstyle-args-in-methods.m +++ b/test/SemaObjC/objc-cstyle-args-in-methods.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-declarations -verify -Wno-objc-root-class %s @interface Foo - (id)test:(id)one, id two; diff --git a/test/SemaObjC/protocols.m b/test/SemaObjC/protocols.m index ca38f20fbd..eb27341007 100644 --- a/test/SemaObjC/protocols.m +++ b/test/SemaObjC/protocols.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-declarations -verify %s @interface INTF1 @required // expected-error {{directive may only be specified in protocols only}} diff --git a/test/SemaObjC/related-result-type-inference.m b/test/SemaObjC/related-result-type-inference.m index 90671145a6..b1d77dc172 100644 --- a/test/SemaObjC/related-result-type-inference.m +++ b/test/SemaObjC/related-result-type-inference.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -verify -Wno-deprecated-declarations -Wno-objc-root-class %s @interface Unrelated @end