]> granicus.if.org Git - clang/commitdiff
Change diagnostic as a result of researching <rdar://problem/6779809> missing interfa...
authorSteve Naroff <snaroff@apple.com>
Mon, 13 Apr 2009 17:58:46 +0000 (17:58 +0000)
committerSteve Naroff <snaroff@apple.com>
Mon, 13 Apr 2009 17:58:46 +0000 (17:58 +0000)
Since ObjC 2.0 class "extensions" have a null name, the diagnostic above is actually "correct". Nevertheless, it is confusing. Decided to remove the name entirely (from my perspective, it didn't add any value). Also simplified the text of the diagnostic a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68967 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaDeclObjC.cpp
test/SemaObjC/interface-tu-variable.m

index 25aa58fffbb12f092f64d47b07bba290e1c5cdf9..56a9fa9ac3e7abd803efb4c389f05713790f7cb2 100644 (file)
@@ -172,7 +172,7 @@ def note_declared_at : Note<"declared at">;
 def err_setter_type_void : Error<"type of setter must be void">;
 def err_duplicate_method_decl : Error<"duplicate declaration of method %0">;
 def err_objc_var_decl_inclass : 
-    Error<"cannot declare variable inside a class, protocol or category %0">;
+    Error<"cannot declare variable inside @interface or @protocol">;
 def error_missing_method_context : Error<
   "missing context for method declaration">;
 def err_objc_property_attr_mutually_exclusive : Error<
index 49433b5b7b08d4e4ee8ab5d9c21420f6e9fc7c89..cf782caf5c0b6c339bec358ea52e27cb3488877c 100644 (file)
@@ -1358,8 +1358,7 @@ void Sema::ActOnAtEnd(SourceLocation AtEndLoc, DeclPtrTy classDecl,
         if (VarDecl *VDecl = dyn_cast<VarDecl>(*I)) {
           if (VDecl->getStorageClass() != VarDecl::Extern &&
               VDecl->getStorageClass() != VarDecl::PrivateExtern)
-            Diag(VDecl->getLocation(), diag::err_objc_var_decl_inclass) 
-              << cast<NamedDecl>(ClassDecl)->getDeclName();
+            Diag(VDecl->getLocation(), diag::err_objc_var_decl_inclass);
         }
     }
   }
index 667c632aa5cd42d50e7816c876ef090e2e78235b..9bf816ab69fb41b1ff7a9bd657f5876935eb6ca8 100644 (file)
@@ -1,19 +1,24 @@
 // RUN: clang-cc -fsyntax-only -verify %s
 
 @interface XX
-int x;  // expected-error {{cannot declare variable inside a class, protocol or category}}
-int one=1;  // expected-error {{cannot declare variable inside a class, protocol or category}}
+int x;  // expected-error {{cannot declare variable inside @interface or @protocol}}
+int one=1;  // expected-error {{cannot declare variable inside @interface or @protocol}}
 @end
 
 @protocol PPP
-int ddd; // expected-error {{cannot declare variable inside a class, protocol or category}}
+int ddd; // expected-error {{cannot declare variable inside @interface or @protocol}}
 @end
 
 @interface XX(CAT)
-  char * III; // expected-error {{cannot declare variable inside a class, protocol or category}}
+  char * III; // expected-error {{cannot declare variable inside @interface or @protocol}}
   extern int OK;
 @end
 
+@interface XX()
+  char * III2; // expected-error {{cannot declare variable inside @interface or @protocol}}
+  extern int OK2;
+@end
+
 
 int main( int argc, const char *argv[] ) {
     return x+one;