1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // rdar: //6734520 3 4 int foo(int) __attribute__((__unavailable__("USE IFOO INSTEAD"))); // expected-note {{function has been explicitly marked unavailable here}} 5 double dfoo(double) __attribute__((__unavailable__("NO LONGER"))); // expected-note 2 {{function has been explicitly marked unavailable here}} 6 7 void bar() __attribute__((__unavailable__)); // expected-note {{explicitly marked unavailable}} 8 9 void 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 } 17 18 char test2[__has_feature(attribute_unavailable_with_message) ? 1 : -1]; 19 20 // rdar://9623855 21 void unavail(void) __attribute__((__unavailable__)); 22 void 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 } 29