forked from OSchip/llvm-project
Add #pragma clang attribute support to the availability attribute
rdar://31707804 llvm-svn: 300826
This commit is contained in:
parent
65f1d52ce6
commit
472cc79086
|
@ -655,7 +655,7 @@ def Availability : InheritableAttr {
|
|||
} }];
|
||||
let HasCustomParsing = 1;
|
||||
let DuplicatesAllowedWhileMerging = 1;
|
||||
// let Subjects = SubjectList<[Named]>;
|
||||
let Subjects = SubjectList<[Named]>;
|
||||
let Documentation = [AvailabilityDocs];
|
||||
}
|
||||
|
||||
|
|
|
@ -2398,10 +2398,8 @@ static void handleAvailabilityAttr(Sema &S, Decl *D,
|
|||
<< Platform->Ident;
|
||||
|
||||
NamedDecl *ND = dyn_cast<NamedDecl>(D);
|
||||
if (!ND) {
|
||||
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
|
||||
if (!ND) // We warned about this already, so just return.
|
||||
return;
|
||||
}
|
||||
|
||||
AvailabilityChange Introduced = Attr.getAvailabilityIntroduced();
|
||||
AvailabilityChange Deprecated = Attr.getAvailabilityDeprecated();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// The number of supported attributes should never go down!
|
||||
|
||||
// CHECK: #pragma clang attribute supports 58 attributes:
|
||||
// CHECK: #pragma clang attribute supports 59 attributes:
|
||||
// CHECK-NEXT: AMDGPUFlatWorkGroupSize (SubjectMatchRule_function)
|
||||
// CHECK-NEXT: AMDGPUNumSGPR (SubjectMatchRule_function)
|
||||
// CHECK-NEXT: AMDGPUNumVGPR (SubjectMatchRule_function)
|
||||
|
@ -13,6 +13,7 @@
|
|||
// CHECK-NEXT: AllocSize (SubjectMatchRule_function)
|
||||
// CHECK-NEXT: Annotate ()
|
||||
// CHECK-NEXT: AssumeAligned (SubjectMatchRule_objc_method, SubjectMatchRule_function)
|
||||
// CHECK-NEXT: Availability ((SubjectMatchRule_record, SubjectMatchRule_enum, SubjectMatchRule_enum_constant, SubjectMatchRule_field, SubjectMatchRule_function, SubjectMatchRule_namespace, SubjectMatchRule_objc_category, SubjectMatchRule_objc_interface, SubjectMatchRule_objc_method, SubjectMatchRule_objc_property, SubjectMatchRule_objc_protocol, SubjectMatchRule_record, SubjectMatchRule_type_alias, SubjectMatchRule_variable))
|
||||
// CHECK-NEXT: CXX11NoReturn (SubjectMatchRule_function)
|
||||
// CHECK-NEXT: CallableWhen (SubjectMatchRule_function_is_member)
|
||||
// CHECK-NEXT: CarriesDependency (SubjectMatchRule_variable_is_parameter, SubjectMatchRule_objc_method, SubjectMatchRule_function)
|
||||
|
|
|
@ -122,9 +122,9 @@ void function();
|
|||
#pragma clang attribute push (__attribute__((annotate)) foo) // expected-error {{expected ','}}
|
||||
#pragma clang attribute push (__attribute__((annotate)), apply_to=function foo) // expected-error {{extra tokens after attribute in a '#pragma clang attribute push'}}
|
||||
|
||||
#pragma clang attribute push (__attribute__((availability(macos, foo=1))), apply_to=function) // expected-error {{'foo' is not an availability stage; use 'introduced', 'deprecated', or 'obsoleted'}}
|
||||
// expected-error@-1 {{attribute 'availability' is not supported by '#pragma clang attribute'}}
|
||||
#pragma clang attribute push (__attribute__((availability(macos, 1))), apply_to=function) // expected-error {{expected 'introduced', 'deprecated', or 'obsoleted'}}
|
||||
#pragma clang attribute push (__attribute__((objc_bridge_related)), apply_to=function)
|
||||
// expected-error@-1 {{attribute 'objc_bridge_related' is not supported by '#pragma clang attribute'}}
|
||||
#pragma clang attribute push (__attribute__((objc_bridge_related(1))), apply_to=function) // expected-error {{expected a related ObjectiveC class name, e.g., 'NSColor'}}
|
||||
|
||||
#pragma clang attribute push (__attribute__((used)), apply_to=function) // expected-error {{attribute 'used' is not supported by '#pragma clang attribute'}}
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ extern int x;
|
|||
|
||||
void f8() {
|
||||
int (^b)(int);
|
||||
b = ^ (int i) __attribute__((availability(macosx,introduced=10.2))) { return 1; }; // expected-warning {{'availability' attribute ignored}}
|
||||
b = ^ (int i) __attribute__((availability(macosx,introduced=10.2))) { return 1; }; // expected-warning {{'availability' attribute only applies to named declarations}}
|
||||
}
|
||||
|
||||
extern int x2 __attribute__((availability(macosx,introduced=10.2))); // expected-note {{previous attribute is here}}
|
||||
|
|
Loading…
Reference in New Issue