]> granicus.if.org Git - clang/commitdiff
Tweak diagnostic:
authorTed Kremenek <kremenek@apple.com>
Sun, 23 Jan 2011 17:21:34 +0000 (17:21 +0000)
committerTed Kremenek <kremenek@apple.com>
Sun, 23 Jan 2011 17:21:34 +0000 (17:21 +0000)
  error: no super class declared in @interface for 'XXX'

to be:

  error: 'X' cannot use 'super' because it is a root class

The latter explains what the user actually did wrong.

Fixes: <rdar://problem/8904409>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124074 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaExprObjC.cpp
test/SemaObjC/undef-superclass-1.m

index 7d3c3c82c4236afaa1b2cfddcbdb0ce217ef667e..ce1359df22a34a1b0701a042ced162e46b9f9fc6 100644 (file)
@@ -2522,8 +2522,8 @@ def warn_inst_method_not_found : Warning<
   "method %objcinstance0 not found (return type defaults to 'id')">;
 def error_no_super_class_message : Error<
   "no @interface declaration found in class messaging of %0">;
-def error_no_super_class : Error<
-  "no super class declared in @interface for %0">;
+def error_root_class_cannot_use_super : Error<
+  "%0 cannot use 'super' because it is a root class">;
 def err_invalid_receiver_to_message : Error<
   "invalid receiver to message expression">;
 def err_invalid_receiver_to_message_super : Error<
index ae18cc12c1955cbb55dd042188c149f6a413a2f9..cc087a1a2d031646a5cfbb3c0b3b207c95aca9fd 100644 (file)
@@ -716,7 +716,8 @@ ExprResult Sema::ActOnSuperMessage(Scope *S,
   ObjCInterfaceDecl *Super = Class->getSuperClass();
   if (!Super) {
     // The current class does not have a superclass.
-    Diag(SuperLoc, diag::error_no_super_class) << Class->getIdentifier();
+    Diag(SuperLoc, diag::error_root_class_cannot_use_super)
+      << Class->getIdentifier();
     return ExprError();
   }
 
index 0c2594cc226ae6f6dd59e9caddc0ccc2264657f2..c941f82e435c9bc53af9ecb6b770f4909fa43e16 100644 (file)
@@ -22,7 +22,7 @@
 
 @implementation SUPER
 - (void)dealloc {
-    [super dealloc]; // expected-error {{no super class declared in @interface for 'SUPER'}}
+    [super dealloc]; // expected-error {{'SUPER' cannot use 'super' because it is a root class}}
 }
 @end