blob: 9f663fc4efd4bff86333724e73dce0803993d707 [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}