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
This commit is contained in:
Argyrios Kyrtzidis 2011-07-01 22:23:09 +00:00
Родитель a8349f5e60
Коммит 05d4876a64
3 изменённых файлов: 9 добавлений и 0 удалений

Просмотреть файл

@ -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">;

Просмотреть файл

@ -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;

Просмотреть файл

@ -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}}
}