xref: /aosp_15_r20/external/clang/test/Lexer/has_extension.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -std=c99 -E %s -o - | FileCheck --check-prefix=CHECK-PED-NONE %s
2*67e74705SXin Li // RUN: %clang_cc1 -std=c99 -pedantic-errors -E %s -o - | FileCheck --check-prefix=CHECK-PED-ERR %s
3*67e74705SXin Li 
4*67e74705SXin Li // CHECK-PED-NONE: no_dummy_extension
5*67e74705SXin Li #if !__has_extension(dummy_extension)
6*67e74705SXin Li int no_dummy_extension();
7*67e74705SXin Li #endif
8*67e74705SXin Li 
9*67e74705SXin Li // Arbitrary feature to test that has_extension is a superset of has_feature
10*67e74705SXin Li // CHECK-PED-NONE: attribute_overloadable
11*67e74705SXin Li #if __has_extension(attribute_overloadable)
12*67e74705SXin Li int attribute_overloadable();
13*67e74705SXin Li #endif
14*67e74705SXin Li 
15*67e74705SXin Li // CHECK-PED-NONE: has_c_static_assert
16*67e74705SXin Li // CHECK-PED-ERR: no_c_static_assert
17*67e74705SXin Li #if __has_extension(c_static_assert)
18*67e74705SXin Li int has_c_static_assert();
19*67e74705SXin Li #else
20*67e74705SXin Li int no_c_static_assert();
21*67e74705SXin Li #endif
22*67e74705SXin Li 
23*67e74705SXin Li // CHECK-PED-NONE: has_c_generic_selections
24*67e74705SXin Li // CHECK-PED-ERR: no_c_generic_selections
25*67e74705SXin Li #if __has_extension(c_generic_selections)
26*67e74705SXin Li int has_c_generic_selections();
27*67e74705SXin Li #else
28*67e74705SXin Li int no_c_generic_selections();
29*67e74705SXin Li #endif
30*67e74705SXin Li 
31*67e74705SXin Li // CHECK-PED-NONE: has_c_alignas
32*67e74705SXin Li // CHECK-PED-ERR: no_c_alignas
33*67e74705SXin Li #if __has_extension(c_alignas)
34*67e74705SXin Li int has_c_alignas();
35*67e74705SXin Li #else
36*67e74705SXin Li int no_c_alignas();
37*67e74705SXin Li #endif
38*67e74705SXin Li 
39*67e74705SXin Li // CHECK-PED-NONE: has_c_alignof
40*67e74705SXin Li // CHECK-PED-ERR: no_c_alignof
41*67e74705SXin Li #if __has_extension(c_alignof)
42*67e74705SXin Li int has_c_alignof();
43*67e74705SXin Li #else
44*67e74705SXin Li int no_c_alignof();
45*67e74705SXin Li #endif
46*67e74705SXin Li 
47*67e74705SXin Li // Arbitrary feature to test that the extension name can be surrounded with
48*67e74705SXin Li // double underscores.
49*67e74705SXin Li // CHECK-PED-NONE: has_double_underscores
50*67e74705SXin Li #if __has_extension(__c_alignas__)
51*67e74705SXin Li int has_double_underscores();
52*67e74705SXin Li #endif
53