1// RUN: %clang_cc1 -fsyntax-only -verify %s 2 3void function() __attribute__((external_source_symbol(language="Swift", defined_in="module", generated_declaration))); 4 5__attribute__((external_source_symbol(language="Swift", defined_in="module"))) 6@interface I 7 8- (void)method __attribute__((external_source_symbol(defined_in= "module"))); 9 10@end 11 12enum E { 13 CaseA __attribute__((external_source_symbol(generated_declaration))), 14 CaseB __attribute__((external_source_symbol(generated_declaration, language="Swift"))) 15} __attribute__((external_source_symbol(language = "Swift"))); 16 17void f2() 18__attribute__((external_source_symbol())); // expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 19void f3() 20__attribute__((external_source_symbol(invalid))); // expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 21void f4() 22__attribute__((external_source_symbol(language))); // expected-error {{expected '=' after language}} 23void f5() 24__attribute__((external_source_symbol(language=))); // expected-error {{expected string literal for language name in 'external_source_symbol' attribute}} 25void f6() 26__attribute__((external_source_symbol(defined_in=20))); // expected-error {{expected string literal for source container name in 'external_source_symbol' attribute}} 27 28void f7() 29__attribute__((external_source_symbol(generated_declaration, generated_declaration))); // expected-error {{duplicate 'generated_declaration' clause in an 'external_source_symbol' attribute}} 30void f8() 31__attribute__((external_source_symbol(language="Swift", language="Swift"))); // expected-error {{duplicate 'language' clause in an 'external_source_symbol' attribute}} 32void f9() 33__attribute__((external_source_symbol(defined_in="module", language="Swift", defined_in="foo"))); // expected-error {{duplicate 'defined_in' clause in an 'external_source_symbol' attribute}} 34 35void f10() 36__attribute__((external_source_symbol(generated_declaration, language="Swift", defined_in="foo", generated_declaration, generated_declaration, language="Swift"))); // expected-error {{duplicate 'generated_declaration' clause in an 'external_source_symbol' attribute}} 37 38void f11() 39__attribute__((external_source_symbol(language="Objective-C++", defined_in="Some file with spaces"))); 40 41void f12() 42__attribute__((external_source_symbol(language="C Sharp", defined_in="file:////Hello world with spaces. cs"))); 43 44void f13() 45__attribute__((external_source_symbol(language=Swift))); // expected-error {{expected string literal for language name in 'external_source_symbol' attribute}} 46 47void f14() 48__attribute__((external_source_symbol(=))); // expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 49 50void f15() 51__attribute__((external_source_symbol(="Swift"))); // expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 52 53void f16() 54__attribute__((external_source_symbol("Swift", "module", generated_declaration))); // expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 55 56void f17() 57__attribute__((external_source_symbol(language="Swift", "generated_declaration"))); // expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 58 59void f18() 60__attribute__((external_source_symbol(language= =))); // expected-error {{expected string literal for language name in 'external_source_symbol' attribute}} 61 62void f19() 63__attribute__((external_source_symbol(defined_in="module" language="swift"))); // expected-error {{expected ')'}} expected-note {{to match this '('}} 64 65void f20() 66__attribute__((external_source_symbol(defined_in="module" language="swift" generated_declaration))); // expected-error {{expected ')'}} expected-note {{to match this '('}} 67 68void f21() 69__attribute__((external_source_symbol(defined_in= language="swift"))); // expected-error {{expected string literal for source container name in 'external_source_symbol' attribute}} 70 71void f22() 72__attribute__((external_source_symbol)); // expected-error {{'external_source_symbol' attribute takes at least 1 argument}} 73 74void f23() 75__attribute__((external_source_symbol(defined_in=, language="swift" generated_declaration))); // expected-error {{expected string literal for source container name in 'external_source_symbol' attribute}} expected-error{{expected ')'}} expected-note{{to match this '('}} 76 77void f24() 78__attribute__((external_source_symbol(language = generated_declaration))); // expected-error {{expected string literal for language name in 'external_source_symbol' attribute}} 79 80void f25() 81__attribute__((external_source_symbol(defined_in=123, defined_in="module"))); // expected-error {{expected string literal for source container name in 'external_source_symbol'}} expected-error {{duplicate 'defined_in' clause in an 'external_source_symbol' attribute}} 82 83void f26() 84__attribute__((external_source_symbol(language=Swift, language="Swift", error))); // expected-error {{expected string literal for language name in 'external_source_symbol'}} expected-error {{duplicate 'language' clause in an 'external_source_symbol' attribute}} expected-error {{expected 'language', 'defined_in', or 'generated_declaration'}} 85