diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Parser/attributes.mm | 25 | ||||
-rw-r--r-- | clang/test/Parser/prefix-attributes.m | 8 |
2 files changed, 25 insertions, 8 deletions
diff --git a/clang/test/Parser/attributes.mm b/clang/test/Parser/attributes.mm new file mode 100644 index 00000000000..812d543e3e2 --- /dev/null +++ b/clang/test/Parser/attributes.mm @@ -0,0 +1,25 @@ +// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s + +__attribute__((deprecated)) @class B; // expected-error {{prefix attribute must be followed by an interface or protocol}} + +__attribute__((deprecated)) @interface A @end +__attribute__((deprecated)) @protocol P0; +__attribute__((deprecated)) @protocol P1 +@end + +#define EXP __attribute__((visibility("default"))) +class EXP C {}; +EXP class C2 {}; // expected-warning {{attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration}} + +@interface EXP I @end // expected-error {{postfix attributes are not allowed on Objective-C directives}} +EXP @interface I2 @end + +@implementation EXP I @end // expected-error {{postfix attributes are not allowed on Objective-C directives}} +// FIXME: Prefix attribute recovery skips until ';' +EXP @implementation I2 @end; // expected-error{{prefix attribute must be followed by an interface or protocol}} + +@class EXP OC; // expected-error {{postfix attributes are not allowed on Objective-C directives}} +EXP @class OC2; // expected-error {{prefix attribute must be followed by an interface or protocol}} + +@protocol EXP P @end // expected-error {{postfix attributes are not allowed on Objective-C directives}} +EXP @protocol P2 @end diff --git a/clang/test/Parser/prefix-attributes.m b/clang/test/Parser/prefix-attributes.m deleted file mode 100644 index 399421fd728..00000000000 --- a/clang/test/Parser/prefix-attributes.m +++ /dev/null @@ -1,8 +0,0 @@ -// RUN: %clang_cc1 -verify -fsyntax-only %s - -__attribute__((deprecated)) @class B; // expected-error {{prefix attribute must be followed by an interface or protocol}} - -__attribute__((deprecated)) @interface A @end -__attribute__((deprecated)) @protocol P0; -__attribute__((deprecated)) @protocol P1 -@end |