From: Argyrios Kyrtzidis Date: Fri, 1 Jul 2011 22:23:09 +0000 (+0000) Subject: Fix the warning that is emitted when an ownership attribute is applied incorrectly. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=05d4876a64865e34366b58fc8a6848c3cde895d9;p=clang Fix the warning that is emitted when an ownership attribute is applied incorrectly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134278 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index f895fc7697..7353f2e813 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -1243,6 +1243,8 @@ def warn_function_attribute_wrong_type : Warning< "'%0' only applies to function types; type here is %1">; def warn_pointer_attribute_wrong_type : Warning< "'%0' only applies to pointer types; type here is %1">; +def warn_objc_object_attribute_wrong_type : Warning< + "'%0' only applies to objective-c object or block pointer types; type here is %1">; def warn_gnu_inline_attribute_requires_inline : Warning< "'gnu_inline' attribute requires function to be marked 'inline'," " attribute ignored">; diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index cc4389ef15..cd4a5b50d8 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -87,6 +87,11 @@ static void diagnoseBadTypeAttribute(Sema &S, const AttributeList &attr, useInstantiationLoc = true; break; + case AttributeList::AT_objc_ownership: + diagID = diag::warn_objc_object_attribute_wrong_type; + useInstantiationLoc = true; + break; + default: // Assume everything else was a function attribute. diagID = diag::warn_function_attribute_wrong_type; diff --git a/test/SemaObjC/arc.m b/test/SemaObjC/arc.m index 1202a2654e..0ec44b9351 100644 --- a/test/SemaObjC/arc.m +++ b/test/SemaObjC/arc.m @@ -604,4 +604,6 @@ void test35(void) { __block id y; test36_helper(&y); ^{ test36_helper(&y); }(); + + __strong int non_objc_type; // expected-warning {{'__strong' only applies to objective-c object or block pointer types}} }