aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Preprocessor/macro-reserved-attrs-cxx11.cpp
blob: ab48f1b46df989333e83cce0b3b13399de45c773 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -Wreserved-attribute-identifier -fsyntax-only -verify %s -DTEST1
// RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -Wreserved-attribute-identifier -fsyntax-only -verify %s -DTEST2
// RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -Wreserved-attribute-identifier -fsyntax-only -verify %s -DTEST3
// RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -Wreserved-attribute-identifier -fsyntax-only -verify %s -DTEST4

#ifdef TEST1

#define assume
#undef assume

#define noreturn // expected-warning {{noreturn is a reserved attribute identifier}}
#undef noreturn  // expected-warning {{noreturn is a reserved attribute identifier}}

#define carries_dependency // expected-warning {{carries_dependency is a reserved attribute identifier}}
#undef carries_dependency  // expected-warning {{carries_dependency is a reserved attribute identifier}}

#define deprecated // expected-warning {{deprecated is a reserved attribute identifier}}
#undef deprecated  // expected-warning {{deprecated is a reserved attribute identifier}}

#define fallthrough // expected-warning {{fallthrough is a reserved attribute identifier}}
#undef fallthrough  // expected-warning {{fallthrough is a reserved attribute identifier}}

#define likely // expected-warning {{likely is a reserved attribute identifier}}
#undef likely  // expected-warning {{likely is a reserved attribute identifier}}

#define no_unique_address // expected-warning {{no_unique_address is a reserved attribute identifier}}
#undef no_unique_address  // expected-warning {{no_unique_address is a reserved attribute identifier}}

#define unlikely // expected-warning {{unlikely is a reserved attribute identifier}}
#undef unlikely  // expected-warning {{unlikely is a reserved attribute identifier}}

#define maybe_unused // expected-warning {{maybe_unused is a reserved attribute identifier}}
#undef maybe_unused  // expected-warning {{maybe_unused is a reserved attribute identifier}}

#define nodiscard // expected-warning {{nodiscard is a reserved attribute identifier}}
#undef nodiscard  // expected-warning {{nodiscard is a reserved attribute identifier}}

#elif TEST2

#define assume "test"
#undef assume

#define noreturn "test" // expected-warning {{noreturn is a reserved attribute identifier}}
#undef noreturn         // expected-warning {{noreturn is a reserved attribute identifier}}

#define carries_dependency "test" // expected-warning {{carries_dependency is a reserved attribute identifier}}
#undef carries_dependency         // expected-warning {{carries_dependency is a reserved attribute identifier}}

#define deprecated "test" // expected-warning {{deprecated is a reserved attribute identifier}}
#undef deprecated         // expected-warning {{deprecated is a reserved attribute identifier}}

#define fallthrough "test" // expected-warning {{fallthrough is a reserved attribute identifier}}
#undef fallthrough         // expected-warning {{fallthrough is a reserved attribute identifier}}

#define likely "test" // expected-warning {{likely is a reserved attribute identifier}}
#undef likely         // expected-warning {{likely is a reserved attribute identifier}}

#define no_unique_address "test" // expected-warning {{no_unique_address is a reserved attribute identifier}}
#undef no_unique_address         // expected-warning {{no_unique_address is a reserved attribute identifier}}

#define unlikely "test" // expected-warning {{unlikely is a reserved attribute identifier}}
#undef unlikely         // expected-warning {{unlikely is a reserved attribute identifier}}

#define maybe_unused "test" // expected-warning {{maybe_unused is a reserved attribute identifier}}
#undef maybe_unused         // expected-warning {{maybe_unused is a reserved attribute identifier}}

#define nodiscard "test" // expected-warning {{nodiscard is a reserved attribute identifier}}
#undef nodiscard         // expected-warning {{nodiscard is a reserved attribute identifier}}

#elif TEST3

#define assume() "test"     // expected-warning {{assume is a reserved attribute identifier}}
#define deprecated() "test" // expected-warning {{deprecated is a reserved attribute identifier}}
#define nodiscard() "test"  // expected-warning {{nodiscard is a reserved attribute identifier}}
#define noreturn() "test"
#define carries_dependency() "test"
#define fallthrough() "test"
#define likely() "test"
#define no_unique_address() "test"
#define unlikely() "test"
#define maybe_unused() "test"

#elif TEST4

#define assume()     // expected-warning {{assume is a reserved attribute identifier}}
#define deprecated() // expected-warning {{deprecated is a reserved attribute identifier}}
#define nodiscard()  // expected-warning {{nodiscard is a reserved attribute identifier}}
#define noreturn()
#define carries_dependency()
#define fallthrough()
#define likely()
#define no_unique_address()
#define unlikely()
#define maybe_unused()

#else

#error Unknown test

#endif