From: Aaron Ballman Date: Tue, 23 Jul 2013 12:13:14 +0000 (+0000) Subject: Correcting the NSObject and Overloadable attribute diagnostics so that the count... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=081c883c3f28d0031e2c8c465c9d18b6fd10e6e4;p=clang Correcting the NSObject and Overloadable attribute diagnostics so that the count reported matches reality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186936 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index a3e05e69d2..807978726c 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -2499,10 +2499,8 @@ static void handleObjCExceptionAttr(Sema &S, Decl *D, } static void handleObjCNSObject(Sema &S, Decl *D, const AttributeList &Attr) { - if (Attr.getNumArgs() != 0) { - S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; + if (!checkAttributeNumArgs(S, Attr, 0)) return; - } if (TypedefNameDecl *TD = dyn_cast(D)) { QualType T = TD->getUnderlyingType(); if (!T->isCARCBridgableType()) { @@ -2533,10 +2531,8 @@ static void handleObjCNSObject(Sema &S, Decl *D, const AttributeList &Attr) { static void handleOverloadableAttr(Sema &S, Decl *D, const AttributeList &Attr) { - if (Attr.getNumArgs() != 0) { - S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; + if (!checkAttributeNumArgs(S, Attr, 0)) return; - } if (!isa(D)) { S.Diag(Attr.getLoc(), diag::err_attribute_overloadable_not_function); diff --git a/test/Sema/overloadable.c b/test/Sema/overloadable.c index ad021898f2..076e05e91a 100644 --- a/test/Sema/overloadable.c +++ b/test/Sema/overloadable.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s int var __attribute__((overloadable)); // expected-error{{'overloadable' attribute can only be applied to a function}} +void params(void) __attribute__((overloadable(12))); // expected-error {{attribute takes no arguments}} int *f(int) __attribute__((overloadable)); // expected-note 2{{previous overload of function is here}} float *f(float); // expected-error{{overloaded function 'f' must have the 'overloadable' attribute}} diff --git a/test/SemaObjC/nsobject-attribute.m b/test/SemaObjC/nsobject-attribute.m index b794eafc9e..64fa83884a 100644 --- a/test/SemaObjC/nsobject-attribute.m +++ b/test/SemaObjC/nsobject-attribute.m @@ -1,6 +1,8 @@ // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s typedef struct CGColor * __attribute__ ((NSObject)) CGColorRef; +typedef struct CGColor * __attribute__((NSObject(12))) Illegal; // expected-error {{attribute takes no arguments}} + static int count; static CGColorRef tmp = 0;