[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