[cfe-commits] r84645 - in /cfe/trunk: include/clang/Basic/DiagnosticParseKinds.td lib/Parse/ParseObjc.cpp test/SemaObjC/objc-string-constant.m test/SemaObjC/try-catch.m

Fariborz Jahanian fjahanian at apple.com
Tue Oct 20 09:39:13 PDT 2009


Author: fjahanian
Date: Tue Oct 20 11:39:13 2009
New Revision: 84645

URL: http://llvm.org/viewvc/llvm-project?rev=84645&view=rev
Log:
Issue warning if method body starts with a semicolon.
Fixes 
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions

Modified:
    cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
    cfe/trunk/lib/Parse/ParseObjc.cpp
    cfe/trunk/test/SemaObjC/objc-string-constant.m
    cfe/trunk/test/SemaObjC/try-catch.m

Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td?rev=84645&r1=84644&r2=84645&view=diff

==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Tue Oct 20 11:39:13 2009
@@ -201,6 +201,9 @@
   "@end must appear in an @implementation context">;
 def error_property_ivar_decl : Error<
   "property synthesize requires specification of an ivar">;
+def warn_semicolon_before_method_nody : Warning<
+  "semicolon at start of method definition is ignored">,
+  InGroup<DiagGroup<"semicolon-at-method-body">>;
 
 def err_expected_field_designator : Error<
   "expected a field designator, such as '.field = 4'">;

Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=84645&r1=84644&r2=84645&view=diff

==============================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/lib/Parse/ParseObjc.cpp Tue Oct 20 11:39:13 2009
@@ -1371,8 +1371,11 @@
                                         "parsing Objective-C method");
 
   // parse optional ';'
-  if (Tok.is(tok::semi))
+  if (Tok.is(tok::semi)) {
+    if (ObjCImpDecl)
+      Diag(Tok, diag::warn_semicolon_before_method_nody);
     ConsumeToken();
+  }
 
   // We should have an opening brace now.
   if (Tok.isNot(tok::l_brace)) {

Modified: cfe/trunk/test/SemaObjC/objc-string-constant.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/objc-string-constant.m?rev=84645&r1=84644&r2=84645&view=diff

==============================================================================
--- cfe/trunk/test/SemaObjC/objc-string-constant.m (original)
+++ cfe/trunk/test/SemaObjC/objc-string-constant.m Tue Oct 20 11:39:13 2009
@@ -29,7 +29,7 @@
 @end
 
 @implementation Subclass
-- (NSString *)token;
+- (NSString *)token;	// expected-warning {{semicolon at start of method definition is ignored}}
 {
   NSMutableString *result = nil;
 

Modified: cfe/trunk/test/SemaObjC/try-catch.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/try-catch.m?rev=84645&r1=84644&r2=84645&view=diff

==============================================================================
--- cfe/trunk/test/SemaObjC/try-catch.m (original)
+++ cfe/trunk/test/SemaObjC/try-catch.m Tue Oct 20 11:39:13 2009
@@ -30,7 +30,7 @@
 @end
 
 @implementation XCRefactoringTransformation
-- (NSDictionary *)setUpInfoForTransformKey:(NSString *)transformKey outError:(NSError **)outError; {
+- (NSDictionary *)setUpInfoForTransformKey:(NSString *)transformKey outError:(NSError **)outError {
     @try {}
     // the exception name is optional (weird)
     @catch (NSException *) {}





More information about the cfe-commits mailing list