]> granicus.if.org Git - clang/commitdiff
Issue a bettter diagnostics for incorrect property setter name.
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 15 Feb 2010 22:20:11 +0000 (22:20 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 15 Feb 2010 22:20:11 +0000 (22:20 +0000)
(radar 7647953).

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

include/clang/Basic/DiagnosticCommonKinds.td
lib/Parse/ParseObjc.cpp
test/Parser/objc-property-syntax.m

index 7e14a329dcaba7524f9fa62c470940e135b64eb7..66f84dbbbabecf62a6a0613715048810e18a7559 100644 (file)
@@ -31,6 +31,9 @@ def note_also_found : Note<"also found">;
 
 // Parse && Lex
 def err_expected_colon : Error<"expected ':'">;
+def err_expected_colon_after_setter_name : Error<
+  "method name referenced in property setter attribute "
+  "must end with ':'">;
 
 // Parse && Sema
 def err_no_declarators : Error<"declaration does not declare anything">;
index 3757ee2f6d2342b6f98b46b13be16fc2e85c2190..d1c9be233fe07df454297cba6fb19da304cb645b 100644 (file)
@@ -515,7 +515,8 @@ void Parser::ParseObjCPropertyAttribute(ObjCDeclSpec &DS, DeclPtrTy ClassDecl,
         DS.setSetterName(Tok.getIdentifierInfo());
         ConsumeToken();  // consume method name
 
-        if (ExpectAndConsume(tok::colon, diag::err_expected_colon, "",
+        if (ExpectAndConsume(tok::colon, 
+                             diag::err_expected_colon_after_setter_name, "",
                              tok::r_paren))
           return;
       } else {
index b5f57f305f395180cf9a1813823b15c2768c8599..064a2090b005a8fb1ef7bf32f8149a45e2922bbf 100644 (file)
@@ -5,8 +5,10 @@
 };
 @property unsigned char bufferedUTF8Bytes[4];  // expected-error {{property cannot have array or function type}}
 @property unsigned char bufferedUTFBytes:1;    // expected-error {{property name cannot be a bitfield}}
+@property(nonatomic, retain, setter=ab_setDefaultToolbarItems) MyClass *ab_defaultToolbarItems; // expected-error {{method name referenced in property setter attribute must end with ':'}}
 @end
 
 @implementation MyClass
+@dynamic ab_defaultToolbarItems;
 @end