[cfe-commits] r147490 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaDeclAttr.cpp test/SemaObjC/default-synthesize-3.m
Douglas Gregor
dgregor at apple.com
Tue Jan 3 21:50:33 PST 2012
On Jan 3, 2012, at 2:52 PM, Fariborz Jahanian wrote:
> Author: fjahanian
> Date: Tue Jan 3 16:52:32 2012
> New Revision: 147490
>
> URL: http://llvm.org/viewvc/llvm-project?rev=147490&view=rev
> Log:
> objc: diagnose misplacement of objc_suppress_autosynthesis
> attribute.
Does this do what you want for @class?
- Doug
> Modified:
> cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
> cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> cfe/trunk/test/SemaObjC/default-synthesize-3.m
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=147490&r1=147489&r2=147490&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Tue Jan 3 16:52:32 2012
> @@ -1369,6 +1369,9 @@
> ":requires exactly %0 arguments}0">;
> def err_attribute_too_many_arguments : Error<
> "attribute takes no more than %0 argument%s0">;
> +def err_suppress_autosynthesis : Error<
> + "objc_suppress_autosynthesis attribute may only be specified on a class"
> + "to a class declaration">;
> def err_attribute_too_few_arguments : Error<
> "attribute takes at least %0 argument%s0">;
> def err_attribute_missing_parameter_name : Error<
>
> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=147490&r1=147489&r2=147490&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Tue Jan 3 16:52:32 2012
> @@ -1581,6 +1581,11 @@
>
> static void handleObjCSuppressAutosynthesisAttr(Sema &S, Decl *D,
> const AttributeList &Attr) {
> + if (!isa<ObjCInterfaceDecl>(D)) {
> + S.Diag(Attr.getLoc(), diag::err_suppress_autosynthesis);
> + return;
> + }
> +
> unsigned NumArgs = Attr.getNumArgs();
> if (NumArgs > 0) {
> S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 0;
>
> Modified: cfe/trunk/test/SemaObjC/default-synthesize-3.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/default-synthesize-3.m?rev=147490&r1=147489&r2=147490&view=diff
> ==============================================================================
> --- cfe/trunk/test/SemaObjC/default-synthesize-3.m (original)
> +++ cfe/trunk/test/SemaObjC/default-synthesize-3.m Tue Jan 3 16:52:32 2012
> @@ -31,3 +31,9 @@
> - (id) DeepMustSynthProperty { return 0; }
> @end
>
> +__attribute ((objc_suppress_autosynthesis))
> + at interface Deep(CAT) // expected-error {{attributes may not be specified on a category}}
> + at end
> +
> +__attribute ((objc_suppress_autosynthesis)) // expected-error {{objc_suppress_autosynthesis attribute may only be specified on a class}}
> + at protocol P @end
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list