1 //TODO: find a complete list
2 pub const RESERVED: &[&str] = &[
3     // control flow
4     "break",
5     "if",
6     "else",
7     "continue",
8     "goto",
9     "do",
10     "while",
11     "for",
12     "switch",
13     "case",
14     // types and values
15     "void",
16     "unsigned",
17     "signed",
18     "bool",
19     "char",
20     "int",
21     "long",
22     "float",
23     "double",
24     "char8_t",
25     "wchar_t",
26     "true",
27     "false",
28     "nullptr",
29     "union",
30     "class",
31     "struct",
32     "enum",
33     // other
34     "main",
35     "using",
36     "decltype",
37     "sizeof",
38     "typeof",
39     "typedef",
40     "explicit",
41     "export",
42     "friend",
43     "namespace",
44     "operator",
45     "public",
46     "template",
47     "typename",
48     "typeid",
49     "co_await",
50     "co_return",
51     "co_yield",
52     "module",
53     "import",
54     "ray_data",
55     "vec_step",
56     "visible",
57     "as_type",
58     // qualifiers
59     "mutable",
60     "static",
61     "volatile",
62     "restrict",
63     "const",
64     "non-temporal",
65     "dereferenceable",
66     "invariant",
67     // exceptions
68     "throw",
69     "try",
70     "catch",
71     // operators
72     "const_cast",
73     "dynamic_cast",
74     "reinterpret_cast",
75     "static_cast",
76     "new",
77     "delete",
78     "and",
79     "and_eq",
80     "bitand",
81     "bitor",
82     "compl",
83     "not",
84     "not_eq",
85     "or",
86     "or_eq",
87     "xor",
88     "xor_eq",
89     "compl",
90     // Metal-specific
91     "constant",
92     "device",
93     "threadgroup",
94     "threadgroup_imageblock",
95     "kernel",
96     "compute",
97     "vertex",
98     "fragment",
99     "read_only",
100     "write_only",
101     "read_write",
102     "auto",
103     // Metal reserved types
104     "llong",
105     "ullong",
106     "quad",
107     "complex",
108     "imaginary",
109     // Metal constants
110     "CHAR_BIT",
111     "SCHAR_MAX",
112     "SCHAR_MIN",
113     "UCHAR_MAX",
114     "CHAR_MAX",
115     "CHAR_MIN",
116     "USHRT_MAX",
117     "SHRT_MAX",
118     "SHRT_MIN",
119     "UINT_MAX",
120     "INT_MAX",
121     "INT_MIN",
122     "ULONG_MAX",
123     "LONG_MAX",
124     "LONG_MIN",
125     "ULLONG_MAX",
126     "LLONG_MAX",
127     "LLONG_MIN",
128     "FLT_DIG",
129     "FLT_MANT_DIG",
130     "FLT_MAX_10_EXP",
131     "FLT_MAX_EXP",
132     "FLT_MIN_10_EXP",
133     "FLT_MIN_EXP",
134     "FLT_RADIX",
135     "FLT_MAX",
136     "FLT_MIN",
137     "FLT_EPSILON",
138     "FLT_DECIMAL_DIG",
139     "FP_ILOGB0",
140     "FP_ILOGB0",
141     "FP_ILOGBNAN",
142     "FP_ILOGBNAN",
143     "MAXFLOAT",
144     "HUGE_VALF",
145     "INFINITY",
146     "NAN",
147     "M_E_F",
148     "M_LOG2E_F",
149     "M_LOG10E_F",
150     "M_LN2_F",
151     "M_LN10_F",
152     "M_PI_F",
153     "M_PI_2_F",
154     "M_PI_4_F",
155     "M_1_PI_F",
156     "M_2_PI_F",
157     "M_2_SQRTPI_F",
158     "M_SQRT2_F",
159     "M_SQRT1_2_F",
160     "HALF_DIG",
161     "HALF_MANT_DIG",
162     "HALF_MAX_10_EXP",
163     "HALF_MAX_EXP",
164     "HALF_MIN_10_EXP",
165     "HALF_MIN_EXP",
166     "HALF_RADIX",
167     "HALF_MAX",
168     "HALF_MIN",
169     "HALF_EPSILON",
170     "HALF_DECIMAL_DIG",
171     "MAXHALF",
172     "HUGE_VALH",
173     "M_E_H",
174     "M_LOG2E_H",
175     "M_LOG10E_H",
176     "M_LN2_H",
177     "M_LN10_H",
178     "M_PI_H",
179     "M_PI_2_H",
180     "M_PI_4_H",
181     "M_1_PI_H",
182     "M_2_PI_H",
183     "M_2_SQRTPI_H",
184     "M_SQRT2_H",
185     "M_SQRT1_2_H",
186     "DBL_DIG",
187     "DBL_MANT_DIG",
188     "DBL_MAX_10_EXP",
189     "DBL_MAX_EXP",
190     "DBL_MIN_10_EXP",
191     "DBL_MIN_EXP",
192     "DBL_RADIX",
193     "DBL_MAX",
194     "DBL_MIN",
195     "DBL_EPSILON",
196     "DBL_DECIMAL_DIG",
197     "MAXDOUBLE",
198     "HUGE_VAL",
199     "M_E",
200     "M_LOG2E",
201     "M_LOG10E",
202     "M_LN2",
203     "M_LN10",
204     "M_PI",
205     "M_PI_2",
206     "M_PI_4",
207     "M_1_PI",
208     "M_2_PI",
209     "M_2_SQRTPI",
210     "M_SQRT2",
211     "M_SQRT1_2",
212 ];
213