10a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor// RUN: %clang_cc1 -fsyntax-only -verify %s 2dceb53180ae145915673913a9398ba4a00b05584Douglas Gregor 3dceb53180ae145915673913a9398ba4a00b05584Douglas Gregor#if !__has_feature(attribute_availability) 4dceb53180ae145915673913a9398ba4a00b05584Douglas Gregor# error 'availability' attribute is not available 5dceb53180ae145915673913a9398ba4a00b05584Douglas Gregor#endif 6dceb53180ae145915673913a9398ba4a00b05584Douglas Gregor 70a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregorvoid f0() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6))); 80a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor 90a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregorvoid f1() __attribute__((availability(macosx,deprecated=10.4,introduced=10.2,obsoleted=10.6))); 100a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor 110a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregorvoid f2() __attribute__((availability(ios,deprecated=10.4.7,introduced=10,obsoleted=10.6))); 120a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor 130a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregorvoid f3() __attribute__((availability(ios,deprecated=10.4.7,introduced=10,obsoleted=10.6,introduced=10.2))); // expected-error{{redundant 'introduced' availability change; only the last specified change will be used}} 140a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor 15b53e417ba487f4193ef3b0485b420e0fdae643a2Douglas Gregorvoid f4() __attribute__((availability(macosx,introduced=10.5), availability(ios,unavailable))); 16b53e417ba487f4193ef3b0485b420e0fdae643a2Douglas Gregor 17b53e417ba487f4193ef3b0485b420e0fdae643a2Douglas Gregorvoid f5() __attribute__((availability(macosx,introduced=10.5), availability(ios,unavailable, unavailable))); // expected-error{{redundant 'unavailable' availability change; only the last specified change will be used}} 18b53e417ba487f4193ef3b0485b420e0fdae643a2Douglas Gregor 192fe9b7fb07dff15dd15dd8755a9a9e6de0fe46fcRichard Trieuvoid f6() __attribute__((availability(macosx,unavailable,introduced=10.5))); // expected-warning{{'unavailable' availability overrides all other availability information}} 20b53e417ba487f4193ef3b0485b420e0fdae643a2Douglas Gregor 21006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanian// rdar://10095131 22006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanianenum E{ 2397f8461a2c553f68a258612d2322e4281c3f0915Andy Gibbs gorf __attribute__((availability(macosx,introduced=8.5, message = 10.0))), // expected-error {{expected string literal for optional message in 'availability' attribute}} 24006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanian garf __attribute__((availability(macosx,introduced=8.5, message))), // expected-error {{expected '=' after 'message'}} 25006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanian 26006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanian foo __attribute__((availability(macosx,introduced=8.5,deprecated=9.0, message="Use CTFontCopyPostScriptName()", deprecated=10.0))) // expected-error {{expected ')'}} \ 27006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanian // expected-note {{to match this '('}} 28006e42f0c8b65b783d565ef10b938a9e82fc02e3Fariborz Jahanian}; 29