blob: e0c541e8d839bd9a34371b4ebf5ad80873184b9a [file] [log] [blame]
NAKAMURA Takumi79451e62011-12-10 07:50:30 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -verify %s
Douglas Gregor20b2ebd2011-03-23 00:50:03 +00002
Fariborz Jahanianc491c3f2012-10-01 18:42:25 +00003void f0() __attribute__((availability(macosx,introduced=10.4,deprecated=10.2))); // expected-warning{{feature cannot be deprecated in OS X version 10.2 before it was introduced in version 10.4; attribute ignored}}
Douglas Gregor20b2ebd2011-03-23 00:50:03 +00004void f1() __attribute__((availability(ios,obsoleted=2.1,deprecated=3.0))); // expected-warning{{feature cannot be obsoleted in iOS version 2.1 before it was deprecated in version 3.0; attribute ignored}}
Douglas Gregor6f47e5c2011-08-10 15:31:35 +00005void f2() __attribute__((availability(ios,introduced=2.1,deprecated=2.1)));
Douglas Gregor20b2ebd2011-03-23 00:50:03 +00006
Douglas Gregor6f47e5c2011-08-10 15:31:35 +00007void f3() __attribute__((availability(otheros,introduced=2.2))); // expected-warning{{unknown platform 'otheros' in availability macro}}
Fariborz Jahanian88d510d2011-12-10 00:28:41 +00008
9// rdar://10095131
10extern void
Fariborz Jahanian08a1eb72012-04-23 20:30:52 +000011ATSFontGetName(const char *oName) __attribute__((availability(macosx,introduced=8.0,deprecated=9.0, message="use CTFontCopyFullName"))); // expected-note {{'ATSFontGetName' declared here}}
Fariborz Jahanian88d510d2011-12-10 00:28:41 +000012
13extern void
14ATSFontGetPostScriptName(int flags) __attribute__((availability(macosx,introduced=8.0,obsoleted=9.0, message="use ATSFontGetFullPostScriptName"))); // expected-note {{function has been explicitly marked unavailable here}}
15
16void test_10095131() {
Fariborz Jahanianc491c3f2012-10-01 18:42:25 +000017 ATSFontGetName("Hello"); // expected-warning {{'ATSFontGetName' is deprecated: first deprecated in OS X 9.0 - use CTFontCopyFullName}}
18 ATSFontGetPostScriptName(100); // expected-error {{'ATSFontGetPostScriptName' is unavailable: obsoleted in OS X 9.0 - use ATSFontGetFullPostScriptName}}
Fariborz Jahanian88d510d2011-12-10 00:28:41 +000019}
Fariborz Jahanian586be882012-01-23 23:38:32 +000020
21// rdar://10711037
22__attribute__((availability(macos, unavailable))) // expected-warning {{attribute 'availability' is ignored}}
23enum {
24 NSDataWritingFileProtectionWriteOnly = 0x30000000,
25 NSDataWritingFileProtectionCompleteUntilUserAuthentication = 0x40000000,
26};
Rafael Espindola2d243bf2012-05-06 19:56:25 +000027
28void f4(int) __attribute__((availability(ios,deprecated=3.0)));
29void f4(int) __attribute__((availability(ios,introduced=4.0))); // expected-warning {{feature cannot be deprecated in iOS version 3.0 before it was introduced in version 4.0; attribute ignored}}
30
Rafael Espindola3c9d9472012-05-07 23:58:18 +000031void f5(int) __attribute__((availability(ios,deprecated=3.0),
32 availability(ios,introduced=4.0))); // expected-warning {{feature cannot be deprecated in iOS version 3.0 before it was introduced in version 4.0; attribute ignored}}
Rafael Espindola2d243bf2012-05-06 19:56:25 +000033
34void f6(int) __attribute__((availability(ios,deprecated=3.0))); // expected-note {{previous attribute is here}}
35void f6(int) __attribute__((availability(ios,deprecated=4.0))); // expected-warning {{availability does not match previous declaration}}
36
37void f7(int) __attribute__((availability(ios,introduced=2.0)));
38void f7(int) __attribute__((availability(ios,deprecated=3.0))); // expected-note {{previous attribute is here}}
39void f7(int) __attribute__((availability(ios,deprecated=4.0))); // expected-warning {{availability does not match previous declaration}}
Jordan Rose68449ac2012-07-24 21:55:34 +000040
41
42// <rdar://problem/11886458>
43#if !__has_feature(attribute_availability_with_message)
44# error "Missing __has_feature"
45#endif