blob: 97104960e5e46a7e7b5a03d8b949a462bb8bb0bd [file] [log] [blame]
Fariborz Jahanianc784dc12010-10-06 23:12:32 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
2// rdar: //6734520
3
4int foo(int) __attribute__((__unavailable__("USE IFOO INSTEAD"))); // expected-note {{function has been explicitly marked unavailable here}}
5double dfoo(double) __attribute__((__unavailable__("NO LONGER"))); // expected-note 2 {{function has been explicitly marked unavailable here}}
6
7void bar() __attribute__((__unavailable__)); // expected-note {{explicitly marked unavailable}}
8
9void test_foo() {
10 int ir = foo(1); // expected-error {{'foo' is unavailable: USE IFOO INSTEAD}}
11 double dr = dfoo(1.0); // expected-error {{'dfoo' is unavailable: NO LONGER}}
12
13 void (*fp)() = &bar; // expected-error {{'bar' is unavailable}}
14
15 double (*fp4)(double) = dfoo; // expected-error {{'dfoo' is unavailable: NO LONGER}}
16}
John McCall48209082010-11-08 19:48:17 +000017
18char test2[__has_feature(attribute_unavailable_with_message) ? 1 : -1];
Argyrios Kyrtzidis12189f52011-06-17 17:28:30 +000019
20// rdar://9623855
21void unavail(void) __attribute__((__unavailable__));
22void unavail(void) {
23 // No complains inside an unavailable function.
24 int ir = foo(1);
25 double dr = dfoo(1.0);
26 void (*fp)() = &bar;
27 double (*fp4)(double) = dfoo;
28}
Fariborz Jahanian97db7262011-09-29 18:40:01 +000029
30// rdar://10201690
31enum foo {
Eli Friedmanc3b23082012-08-08 21:52:41 +000032 a = 1, // expected-note {{declared here}}
Fariborz Jahanian350e9562012-05-27 16:59:48 +000033 b __attribute__((deprecated())) = 2, // expected-note {{declared here}}
Fariborz Jahanian97db7262011-09-29 18:40:01 +000034 c = 3
35}__attribute__((deprecated()));
36
Fariborz Jahanian39b4fc82011-11-28 19:45:58 +000037enum fee { // expected-note {{declaration has been explicitly marked unavailable here}}
38 r = 1, // expected-note {{declaration has been explicitly marked unavailable here}}
Fariborz Jahanian97db7262011-09-29 18:40:01 +000039 s = 2,
40 t = 3
41}__attribute__((unavailable()));
42
Richard Trieu2fe9b7f2011-12-15 00:38:15 +000043enum fee f() { // expected-error {{'fee' is unavailable}}
44 int i = a; // expected-warning {{'a' is deprecated}}
Fariborz Jahanian97db7262011-09-29 18:40:01 +000045
46 i = b; // expected-warning {{'b' is deprecated}}
47
Fariborz Jahanian39b4fc82011-11-28 19:45:58 +000048 return r; // expected-error {{'r' is unavailable}}
Fariborz Jahanian97db7262011-09-29 18:40:01 +000049}