]> granicus.if.org Git - clang/commitdiff
Remove optional parameter bit from attribute ObjCSuppressProtocol.
authorTed Kremenek <kremenek@apple.com>
Sat, 23 Nov 2013 22:29:11 +0000 (22:29 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 23 Nov 2013 22:29:11 +0000 (22:29 +0000)
This refines some diagnostics and reduces some boilerplate checking logic.

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

include/clang/Basic/Attr.td
lib/Sema/SemaDeclAttr.cpp
test/SemaObjC/protocols-suppress-conformance.m

index 5902932be2de6731a6841e923003594fde3d3ca8..ff1d495d6705ead259d6a90d233661220641bcc7 100644 (file)
@@ -645,7 +645,7 @@ def ObjCRootClass : InheritableAttr {
 def ObjCSuppressProtocol : InheritableAttr {
   let Spellings = [GNU<"objc_suppress_protocol_methods">];
   let Subjects = [ObjCInterface];
-  let Args = [IdentifierArgument<"Protocol", 1>];
+  let Args = [IdentifierArgument<"Protocol">];
 }
 
 def Overloadable : Attr {
index 7ae873d7f9ea979b0e6ef904bdb1a99c906c6f1a..5a0b72fcb50b686e0ac8332340027ff05b5ab5dd 100644 (file)
@@ -2142,8 +2142,7 @@ static void handleObjCSuppresProtocolAttr(Sema &S, Decl *D,
     return;
   }
 
-  IdentifierLoc *Parm = (Attr.getNumArgs() == 1 && Attr.isArgIdent(0))
-                        ? Attr.getArgAsIdent(0) : 0;
+  IdentifierLoc *Parm = Attr.isArgIdent(0) ? Attr.getArgAsIdent(0) : 0;
 
   if (!Parm) {
     S.Diag(D->getLocStart(), diag::err_objc_attr_not_id) << Attr.getName() << 1;
index 61c950a7b0a254535448698f6a8a758243ec9f7b..880819e407e9b16e430b00a3a793085c2eb357e7 100644 (file)
@@ -68,8 +68,8 @@ __attribute__((objc_supress_protocol(Protocol)))
 @interface ClassE (MyCat) @end // expected-error {{attributes may not be specified on a category}}
 
 // The attribute requires one or more identifiers.
-__attribute__((objc_suppress_protocol_methods()))
-@interface ClassF @end // expected-error {{parameter of 'objc_suppress_protocol_methods' attribute must be a single name of an Objective-C protocol}}
+__attribute__((objc_suppress_protocol_methods())) // expected-error {{'objc_suppress_protocol_methods' attribute takes one argument}}
+@interface ClassF @end
 
 // The attribute requires one or more identifiers.
 __attribute__((objc_suppress_protocol_methods(ProtoA, ProtoB))) // expected-error {{use of undeclared identifier 'ProtoB'}}