]> git.proxmox.com Git - rustc.git/blame - src/tools/rust-analyzer/crates/syntax/src/tests/ast_src.rs
bump version to 1.75.0+dfsg1-1~bpo12+pve1
[rustc.git] / src / tools / rust-analyzer / crates / syntax / src / tests / ast_src.rs
CommitLineData
064997fb
FG
1//! Defines input for code generation process.
2
3pub(crate) struct KindsSrc<'a> {
4 pub(crate) punct: &'a [(&'a str, &'a str)],
5 pub(crate) keywords: &'a [&'a str],
6 pub(crate) contextual_keywords: &'a [&'a str],
7 pub(crate) literals: &'a [&'a str],
8 pub(crate) tokens: &'a [&'a str],
9 pub(crate) nodes: &'a [&'a str],
10}
11
12pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc {
13 punct: &[
14 (";", "SEMICOLON"),
15 (",", "COMMA"),
16 ("(", "L_PAREN"),
17 (")", "R_PAREN"),
18 ("{", "L_CURLY"),
19 ("}", "R_CURLY"),
20 ("[", "L_BRACK"),
21 ("]", "R_BRACK"),
22 ("<", "L_ANGLE"),
23 (">", "R_ANGLE"),
24 ("@", "AT"),
25 ("#", "POUND"),
26 ("~", "TILDE"),
27 ("?", "QUESTION"),
28 ("$", "DOLLAR"),
29 ("&", "AMP"),
30 ("|", "PIPE"),
31 ("+", "PLUS"),
32 ("*", "STAR"),
33 ("/", "SLASH"),
34 ("^", "CARET"),
35 ("%", "PERCENT"),
36 ("_", "UNDERSCORE"),
37 (".", "DOT"),
38 ("..", "DOT2"),
39 ("...", "DOT3"),
40 ("..=", "DOT2EQ"),
41 (":", "COLON"),
42 ("::", "COLON2"),
43 ("=", "EQ"),
44 ("==", "EQ2"),
45 ("=>", "FAT_ARROW"),
46 ("!", "BANG"),
47 ("!=", "NEQ"),
48 ("-", "MINUS"),
49 ("->", "THIN_ARROW"),
50 ("<=", "LTEQ"),
51 (">=", "GTEQ"),
52 ("+=", "PLUSEQ"),
53 ("-=", "MINUSEQ"),
54 ("|=", "PIPEEQ"),
55 ("&=", "AMPEQ"),
56 ("^=", "CARETEQ"),
57 ("/=", "SLASHEQ"),
58 ("*=", "STAREQ"),
59 ("%=", "PERCENTEQ"),
60 ("&&", "AMP2"),
61 ("||", "PIPE2"),
62 ("<<", "SHL"),
63 (">>", "SHR"),
64 ("<<=", "SHLEQ"),
65 (">>=", "SHREQ"),
66 ],
67 keywords: &[
9c376795 68 "as", "async", "await", "box", "break", "const", "continue", "crate", "do", "dyn", "else",
064997fb
FG
69 "enum", "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop", "macro",
70 "match", "mod", "move", "mut", "pub", "ref", "return", "self", "Self", "static", "struct",
71 "super", "trait", "true", "try", "type", "unsafe", "use", "where", "while", "yield",
72 ],
781aab86
FG
73 contextual_keywords: &[
74 "auto",
75 "builtin",
76 "default",
77 "existential",
78 "union",
79 "raw",
80 "macro_rules",
81 "yeet",
82 "offset_of",
83 "asm",
84 "format_args",
85 ],
fe692bf9 86 literals: &["INT_NUMBER", "FLOAT_NUMBER", "CHAR", "BYTE", "STRING", "BYTE_STRING", "C_STRING"],
064997fb
FG
87 tokens: &["ERROR", "IDENT", "WHITESPACE", "LIFETIME_IDENT", "COMMENT", "SHEBANG"],
88 nodes: &[
89 "SOURCE_FILE",
90 "STRUCT",
91 "UNION",
92 "ENUM",
93 "FN",
94 "RET_TYPE",
95 "EXTERN_CRATE",
96 "MODULE",
97 "USE",
98 "STATIC",
99 "CONST",
100 "TRAIT",
353b0b11 101 "TRAIT_ALIAS",
064997fb
FG
102 "IMPL",
103 "TYPE_ALIAS",
104 "MACRO_CALL",
105 "MACRO_RULES",
106 "MACRO_ARM",
107 "TOKEN_TREE",
108 "MACRO_DEF",
109 "PAREN_TYPE",
110 "TUPLE_TYPE",
111 "MACRO_TYPE",
112 "NEVER_TYPE",
113 "PATH_TYPE",
114 "PTR_TYPE",
115 "ARRAY_TYPE",
116 "SLICE_TYPE",
117 "REF_TYPE",
118 "INFER_TYPE",
119 "FN_PTR_TYPE",
120 "FOR_TYPE",
121 "IMPL_TRAIT_TYPE",
122 "DYN_TRAIT_TYPE",
123 "OR_PAT",
124 "PAREN_PAT",
125 "REF_PAT",
126 "BOX_PAT",
127 "IDENT_PAT",
128 "WILDCARD_PAT",
129 "REST_PAT",
130 "PATH_PAT",
131 "RECORD_PAT",
132 "RECORD_PAT_FIELD_LIST",
133 "RECORD_PAT_FIELD",
134 "TUPLE_STRUCT_PAT",
135 "TUPLE_PAT",
136 "SLICE_PAT",
137 "RANGE_PAT",
138 "LITERAL_PAT",
139 "MACRO_PAT",
140 "CONST_BLOCK_PAT",
141 // atoms
142 "TUPLE_EXPR",
143 "ARRAY_EXPR",
144 "PAREN_EXPR",
145 "PATH_EXPR",
146 "CLOSURE_EXPR",
147 "IF_EXPR",
148 "WHILE_EXPR",
149 "LOOP_EXPR",
150 "FOR_EXPR",
151 "CONTINUE_EXPR",
152 "BREAK_EXPR",
153 "LABEL",
154 "BLOCK_EXPR",
155 "STMT_LIST",
156 "RETURN_EXPR",
157 "YIELD_EXPR",
9c376795 158 "YEET_EXPR",
064997fb
FG
159 "LET_EXPR",
160 "UNDERSCORE_EXPR",
161 "MACRO_EXPR",
162 "MATCH_EXPR",
163 "MATCH_ARM_LIST",
164 "MATCH_ARM",
165 "MATCH_GUARD",
166 "RECORD_EXPR",
167 "RECORD_EXPR_FIELD_LIST",
168 "RECORD_EXPR_FIELD",
781aab86
FG
169 "OFFSET_OF_EXPR",
170 "ASM_EXPR",
171 "FORMAT_ARGS_EXPR",
172 "FORMAT_ARGS_ARG",
064997fb
FG
173 // postfix
174 "CALL_EXPR",
175 "INDEX_EXPR",
176 "METHOD_CALL_EXPR",
177 "FIELD_EXPR",
178 "AWAIT_EXPR",
179 "TRY_EXPR",
180 "CAST_EXPR",
181 // unary
182 "REF_EXPR",
183 "PREFIX_EXPR",
184 "RANGE_EXPR", // just weird
185 "BIN_EXPR",
186 "EXTERN_BLOCK",
187 "EXTERN_ITEM_LIST",
188 "VARIANT",
189 "RECORD_FIELD_LIST",
190 "RECORD_FIELD",
191 "TUPLE_FIELD_LIST",
192 "TUPLE_FIELD",
193 "VARIANT_LIST",
194 "ITEM_LIST",
195 "ASSOC_ITEM_LIST",
196 "ATTR",
197 "META",
198 "USE_TREE",
199 "USE_TREE_LIST",
200 "PATH",
201 "PATH_SEGMENT",
202 "LITERAL",
203 "RENAME",
204 "VISIBILITY",
205 "WHERE_CLAUSE",
206 "WHERE_PRED",
207 "ABI",
208 "NAME",
209 "NAME_REF",
210 "LET_STMT",
211 "LET_ELSE",
212 "EXPR_STMT",
213 "GENERIC_PARAM_LIST",
214 "GENERIC_PARAM",
215 "LIFETIME_PARAM",
216 "TYPE_PARAM",
fe692bf9 217 "RETURN_TYPE_ARG",
064997fb
FG
218 "CONST_PARAM",
219 "GENERIC_ARG_LIST",
220 "LIFETIME",
221 "LIFETIME_ARG",
222 "TYPE_ARG",
223 "ASSOC_TYPE_ARG",
224 "CONST_ARG",
225 "PARAM_LIST",
226 "PARAM",
227 "SELF_PARAM",
228 "ARG_LIST",
229 "TYPE_BOUND",
230 "TYPE_BOUND_LIST",
231 // macro related
232 "MACRO_ITEMS",
233 "MACRO_STMTS",
add651ee 234 "MACRO_EAGER_INPUT",
064997fb
FG
235 ],
236};
237
238#[derive(Default, Debug)]
239pub(crate) struct AstSrc {
240 pub(crate) tokens: Vec<String>,
241 pub(crate) nodes: Vec<AstNodeSrc>,
242 pub(crate) enums: Vec<AstEnumSrc>,
243}
244
245#[derive(Debug)]
246pub(crate) struct AstNodeSrc {
247 pub(crate) doc: Vec<String>,
248 pub(crate) name: String,
249 pub(crate) traits: Vec<String>,
250 pub(crate) fields: Vec<Field>,
251}
252
253#[derive(Debug, Eq, PartialEq)]
254pub(crate) enum Field {
255 Token(String),
256 Node { name: String, ty: String, cardinality: Cardinality },
257}
258
259#[derive(Debug, Eq, PartialEq)]
260pub(crate) enum Cardinality {
261 Optional,
262 Many,
263}
264
265#[derive(Debug)]
266pub(crate) struct AstEnumSrc {
267 pub(crate) doc: Vec<String>,
268 pub(crate) name: String,
269 pub(crate) traits: Vec<String>,
270 pub(crate) variants: Vec<String>,
271}