]> granicus.if.org Git - clang/commitdiff
Improve diagnostics on missing property decl.
authorFariborz Jahanian <fjahanian@apple.com>
Thu, 17 Feb 2011 17:30:05 +0000 (17:30 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Thu, 17 Feb 2011 17:30:05 +0000 (17:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125752 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaExprObjC.cpp
test/SemaObjC/property-missing.m

index d6840903e3bcaaff5860afceb1a4788320dd0155..e9df286d2d28747f1e7ba7d524216804dee7f764 100644 (file)
@@ -2580,7 +2580,8 @@ def err_getter_not_found : Error<
 def err_property_not_found_forward_class : Error<
   "property %0 cannot be found in forward class object %1">;
 def err_property_not_as_forward_class : Error<
-  "property %0 names an object of forward class type in class object %1">;
+  "property %0 refers to an incomplete Objective-C class %1 "
+  "(with no @interface available)">;
 def note_forward_class : Note<
   "forward class is declared here">;
 def err_duplicate_property : Error<
index c41327e2846e027cd82d3f99dd964907427acb01..4d03b068ca855d08e27dca6844e0c2346572626d 100644 (file)
@@ -530,7 +530,7 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
       if (ObjCInterfaceDecl *IFace = IFaceT->getDecl())
         if (IFace->isForwardDecl()) {
           Diag(MemberLoc, diag::err_property_not_as_forward_class)
-          << MemberName << QualType(OPT, 0);
+          << MemberName << IFace;
           Diag(IFace->getLocation(), diag::note_forward_class);
           return ExprError();
         }
index 6b794fb02f3b78f2b58d024427e5c3f9b2b01220..bf75601b79bcb8420283358579cd627a4beab258 100644 (file)
@@ -29,6 +29,6 @@ void f3(id o)
 @end
 
 void foo(MyClass *myObject) {
-       myObject.someOtherObject.someProperty = 0; // expected-error {{property 'someOtherObject' names an object of forward class type in class object 'MyClass *'}}
+       myObject.someOtherObject.someProperty = 0; // expected-error {{property 'someOtherObject' refers to an incomplete Objective-C class 'SomeOtherClass' (with no @interface available)}}
 }