summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Basic/Attr.td2
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp3
-rw-r--r--clang/test/SemaObjC/protocols-suppress-conformance.m4
3 files changed, 4 insertions, 5 deletions
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td
index 5902932be2d..ff1d495d670 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -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 {
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index 7ae873d7f9e..5a0b72fcb50 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -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;
diff --git a/clang/test/SemaObjC/protocols-suppress-conformance.m b/clang/test/SemaObjC/protocols-suppress-conformance.m
index 61c950a7b0a..880819e407e 100644
--- a/clang/test/SemaObjC/protocols-suppress-conformance.m
+++ b/clang/test/SemaObjC/protocols-suppress-conformance.m
@@ -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'}}
OpenPOWER on IntegriCloud