| // RUN: %clang_cc1 -verify -fsyntax-only %s |
| |
| // expected-error@+1 {{'__swift_bridge__' attribute takes one argument}} |
| __attribute__((__swift_bridge__)) |
| @interface I |
| @end |
| |
| // expected-error@+1 {{'__swift_bridge__' attribute requires a string}} |
| __attribute__((__swift_bridge__(1))) |
| @interface J |
| @end |
| |
| // expected-error@+1 {{'__swift_bridge__' attribute takes one argument}} |
| __attribute__((__swift_bridge__("K", 1))) |
| @interface K |
| @end |
| |
| @interface L |
| // expected-error@+1 {{'__swift_bridge__' attribute only applies to tag types, typedefs, Objective-C interfaces, and Objective-C protocols}} |
| - (void)method __attribute__((__swift_bridge__("method"))); |
| @end |
| |
| __attribute__((__swift_bridge__("Array"))) |
| @interface NSArray |
| @end |
| |
| __attribute__((__swift_bridge__("ProtocolP"))) |
| @protocol P |
| @end |
| |
| typedef NSArray *NSArrayAlias __attribute__((__swift_bridge__("ArrayAlias"))); |
| |
| struct __attribute__((__swift_bridge__("StructT"))) T {}; |
| |
| // Duplicate attributes with the same arguments are fine. |
| struct __attribute__((swift_bridge("foo"), swift_bridge("foo"))) S; |
| // Duplicate attributes with different arguments are not. |
| struct __attribute__((swift_bridge("foo"), swift_bridge("bar"))) S; // expected-warning {{attribute 'swift_bridge' is already applied with different arguments}} |