diff options
author | Nico Weber <nicolasweber@gmx.de> | 2013-04-03 17:36:11 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2013-04-03 17:36:11 +0000 |
commit | 04e213b6b6fb14b8b20b83bf7fd4a4cddbbcb91c (patch) | |
tree | e33e4617af229861051636ecea3bdd5a9d04b8ed /clang/test | |
parent | 0707b125e3e81b456dde6f7591d5f9a4e3e8976e (diff) | |
download | bcm5719-llvm-04e213b6b6fb14b8b20b83bf7fd4a4cddbbcb91c.tar.gz bcm5719-llvm-04e213b6b6fb14b8b20b83bf7fd4a4cddbbcb91c.zip |
Emit a nicer diagnostic for misplaced attributes on ObjC directives.
llvm-svn: 178670
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 |