1use oak_core::{ElementType, UniversalElementRole};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6pub enum DartElementType {
7 Root,
9 ClassDeclaration,
11 FunctionDeclaration,
13 Whitespace,
15 Newline,
17 Identifier,
19 IntegerLiteral,
21 DoubleLiteral,
23 StringLiteral,
25 BooleanLiteral,
27 NullLiteral,
29 Abstract,
31 As,
33 Assert,
35 Async,
37 Await,
39 Break,
41 Case,
43 Catch,
45 Class,
47 Const,
49 Continue,
51 Covariant,
53 Default,
55 Deferred,
57 Do,
59 Dynamic,
61 Else,
63 Enum,
65 Export,
67 Extends,
69 Extension,
71 External,
73 Factory,
75 False,
77 Final,
79 Finally,
81 For,
83 Function,
85 Get,
87 Hide,
89 If,
91 Implements,
93 Import,
95 In,
97 Interface,
99 Int,
101 Is,
103 Late,
105 Library,
107 Mixin,
109 New,
111 Null,
113 On,
115 Operator,
117 Part,
119 Required,
121 Rethrow,
123 Return,
125 Set,
127 Show,
129 Static,
131 Super,
133 Switch,
135 Sync,
137 This,
139 Throw,
141 True,
143 Try,
145 Typedef,
147 Var,
149 Void,
151 While,
153 With,
155 Yield,
157 Plus,
159 Minus,
161 Star,
163 Slash,
165 Percent,
167 TildeSlash,
169 Equal,
171 EqualEqual,
173 BangEqual,
175 Less,
177 Greater,
179 LessEqual,
181 GreaterEqual,
183 LeftShift,
185 RightShift,
187 Ampersand,
189 Pipe,
191 Caret,
193 Tilde,
195 Bang,
197 AmpersandAmpersand,
199 PipePipe,
201 Question,
203 QuestionQuestion,
205 PlusPlus,
207 MinusMinus,
209 PlusEqual,
211 MinusEqual,
213 StarEqual,
215 SlashEqual,
217 PercentEqual,
219 TildeSlashEqual,
221 LeftShiftEqual,
223 RightShiftEqual,
225 AmpersandEqual,
227 PipeEqual,
229 CaretEqual,
231 QuestionQuestionEqual,
233 Arrow,
235 Dot,
237 DotDot,
239 DotDotDot,
241 QuestionDot,
243 LeftParen,
245 RightParen,
247 LeftBracket,
249 RightBracket,
251 LeftBrace,
253 RightBrace,
255 Semicolon,
257 Comma,
259 Colon,
261 At,
263 Hash,
265 LineComment,
267 BlockComment,
269 DocComment,
271 Error,
273 Eof,
275 VariableDeclaration,
277}
278
279impl ElementType for DartElementType {
281 type Role = UniversalElementRole;
282
283 fn role(&self) -> Self::Role {
285 match self {
286 _ => UniversalElementRole::None,
287 }
288 }
289}
290
291impl From<crate::lexer::token_type::DartTokenType> for DartElementType {
293 fn from(token: crate::lexer::token_type::DartTokenType) -> Self {
295 match token {
296 crate::lexer::token_type::DartTokenType::Root => DartElementType::Root,
297 crate::lexer::token_type::DartTokenType::ClassDeclaration => DartElementType::ClassDeclaration,
298 crate::lexer::token_type::DartTokenType::FunctionDeclaration => DartElementType::FunctionDeclaration,
299 crate::lexer::token_type::DartTokenType::Whitespace => DartElementType::Whitespace,
300 crate::lexer::token_type::DartTokenType::Newline => DartElementType::Newline,
301 crate::lexer::token_type::DartTokenType::Identifier => DartElementType::Identifier,
302 crate::lexer::token_type::DartTokenType::IntegerLiteral => DartElementType::IntegerLiteral,
303 crate::lexer::token_type::DartTokenType::DoubleLiteral => DartElementType::DoubleLiteral,
304 crate::lexer::token_type::DartTokenType::StringLiteral => DartElementType::StringLiteral,
305 crate::lexer::token_type::DartTokenType::BooleanLiteral => DartElementType::BooleanLiteral,
306 crate::lexer::token_type::DartTokenType::NullLiteral => DartElementType::NullLiteral,
307 crate::lexer::token_type::DartTokenType::Abstract => DartElementType::Abstract,
308 crate::lexer::token_type::DartTokenType::As => DartElementType::As,
309 crate::lexer::token_type::DartTokenType::Assert => DartElementType::Assert,
310 crate::lexer::token_type::DartTokenType::Async => DartElementType::Async,
311 crate::lexer::token_type::DartTokenType::Await => DartElementType::Await,
312 crate::lexer::token_type::DartTokenType::Break => DartElementType::Break,
313 crate::lexer::token_type::DartTokenType::Case => DartElementType::Case,
314 crate::lexer::token_type::DartTokenType::Catch => DartElementType::Catch,
315 crate::lexer::token_type::DartTokenType::Class => DartElementType::Class,
316 crate::lexer::token_type::DartTokenType::Const => DartElementType::Const,
317 crate::lexer::token_type::DartTokenType::Continue => DartElementType::Continue,
318 crate::lexer::token_type::DartTokenType::Covariant => DartElementType::Covariant,
319 crate::lexer::token_type::DartTokenType::Default => DartElementType::Default,
320 crate::lexer::token_type::DartTokenType::Deferred => DartElementType::Deferred,
321 crate::lexer::token_type::DartTokenType::Do => DartElementType::Do,
322 crate::lexer::token_type::DartTokenType::Dynamic => DartElementType::Dynamic,
323 crate::lexer::token_type::DartTokenType::Else => DartElementType::Else,
324 crate::lexer::token_type::DartTokenType::Enum => DartElementType::Enum,
325 crate::lexer::token_type::DartTokenType::Export => DartElementType::Export,
326 crate::lexer::token_type::DartTokenType::Extends => DartElementType::Extends,
327 crate::lexer::token_type::DartTokenType::Extension => DartElementType::Extension,
328 crate::lexer::token_type::DartTokenType::External => DartElementType::External,
329 crate::lexer::token_type::DartTokenType::Factory => DartElementType::Factory,
330 crate::lexer::token_type::DartTokenType::False => DartElementType::False,
331 crate::lexer::token_type::DartTokenType::Final => DartElementType::Final,
332 crate::lexer::token_type::DartTokenType::Finally => DartElementType::Finally,
333 crate::lexer::token_type::DartTokenType::For => DartElementType::For,
334 crate::lexer::token_type::DartTokenType::Function => DartElementType::Function,
335 crate::lexer::token_type::DartTokenType::Get => DartElementType::Get,
336 crate::lexer::token_type::DartTokenType::Hide => DartElementType::Hide,
337 crate::lexer::token_type::DartTokenType::If => DartElementType::If,
338 crate::lexer::token_type::DartTokenType::Implements => DartElementType::Implements,
339 crate::lexer::token_type::DartTokenType::Import => DartElementType::Import,
340 crate::lexer::token_type::DartTokenType::In => DartElementType::In,
341 crate::lexer::token_type::DartTokenType::Interface => DartElementType::Interface,
342 crate::lexer::token_type::DartTokenType::Int => DartElementType::Int,
343 crate::lexer::token_type::DartTokenType::Is => DartElementType::Is,
344 crate::lexer::token_type::DartTokenType::Late => DartElementType::Late,
345 crate::lexer::token_type::DartTokenType::Library => DartElementType::Library,
346 crate::lexer::token_type::DartTokenType::Mixin => DartElementType::Mixin,
347 crate::lexer::token_type::DartTokenType::New => DartElementType::New,
348 crate::lexer::token_type::DartTokenType::Null => DartElementType::Null,
349 crate::lexer::token_type::DartTokenType::On => DartElementType::On,
350 crate::lexer::token_type::DartTokenType::Operator => DartElementType::Operator,
351 crate::lexer::token_type::DartTokenType::Part => DartElementType::Part,
352 crate::lexer::token_type::DartTokenType::Required => DartElementType::Required,
353 crate::lexer::token_type::DartTokenType::Rethrow => DartElementType::Rethrow,
354 crate::lexer::token_type::DartTokenType::Return => DartElementType::Return,
355 crate::lexer::token_type::DartTokenType::Set => DartElementType::Set,
356 crate::lexer::token_type::DartTokenType::Show => DartElementType::Show,
357 crate::lexer::token_type::DartTokenType::Static => DartElementType::Static,
358 crate::lexer::token_type::DartTokenType::Super => DartElementType::Super,
359 crate::lexer::token_type::DartTokenType::Switch => DartElementType::Switch,
360 crate::lexer::token_type::DartTokenType::Sync => DartElementType::Sync,
361 crate::lexer::token_type::DartTokenType::This => DartElementType::This,
362 crate::lexer::token_type::DartTokenType::Throw => DartElementType::Throw,
363 crate::lexer::token_type::DartTokenType::True => DartElementType::True,
364 crate::lexer::token_type::DartTokenType::Try => DartElementType::Try,
365 crate::lexer::token_type::DartTokenType::Typedef => DartElementType::Typedef,
366 crate::lexer::token_type::DartTokenType::Var => DartElementType::Var,
367 crate::lexer::token_type::DartTokenType::Void => DartElementType::Void,
368 crate::lexer::token_type::DartTokenType::While => DartElementType::While,
369 crate::lexer::token_type::DartTokenType::With => DartElementType::With,
370 crate::lexer::token_type::DartTokenType::Yield => DartElementType::Yield,
371 crate::lexer::token_type::DartTokenType::Plus => DartElementType::Plus,
372 crate::lexer::token_type::DartTokenType::Minus => DartElementType::Minus,
373 crate::lexer::token_type::DartTokenType::Star => DartElementType::Star,
374 crate::lexer::token_type::DartTokenType::Slash => DartElementType::Slash,
375 crate::lexer::token_type::DartTokenType::Percent => DartElementType::Percent,
376 crate::lexer::token_type::DartTokenType::TildeSlash => DartElementType::TildeSlash,
377 crate::lexer::token_type::DartTokenType::Equal => DartElementType::Equal,
378 crate::lexer::token_type::DartTokenType::EqualEqual => DartElementType::EqualEqual,
379 crate::lexer::token_type::DartTokenType::BangEqual => DartElementType::BangEqual,
380 crate::lexer::token_type::DartTokenType::Less => DartElementType::Less,
381 crate::lexer::token_type::DartTokenType::Greater => DartElementType::Greater,
382 crate::lexer::token_type::DartTokenType::LessEqual => DartElementType::LessEqual,
383 crate::lexer::token_type::DartTokenType::GreaterEqual => DartElementType::GreaterEqual,
384 crate::lexer::token_type::DartTokenType::LeftShift => DartElementType::LeftShift,
385 crate::lexer::token_type::DartTokenType::RightShift => DartElementType::RightShift,
386 crate::lexer::token_type::DartTokenType::Ampersand => DartElementType::Ampersand,
387 crate::lexer::token_type::DartTokenType::Pipe => DartElementType::Pipe,
388 crate::lexer::token_type::DartTokenType::Caret => DartElementType::Caret,
389 crate::lexer::token_type::DartTokenType::Tilde => DartElementType::Tilde,
390 crate::lexer::token_type::DartTokenType::Bang => DartElementType::Bang,
391 crate::lexer::token_type::DartTokenType::AmpersandAmpersand => DartElementType::AmpersandAmpersand,
392 crate::lexer::token_type::DartTokenType::PipePipe => DartElementType::PipePipe,
393 crate::lexer::token_type::DartTokenType::Question => DartElementType::Question,
394 crate::lexer::token_type::DartTokenType::QuestionQuestion => DartElementType::QuestionQuestion,
395 crate::lexer::token_type::DartTokenType::PlusPlus => DartElementType::PlusPlus,
396 crate::lexer::token_type::DartTokenType::MinusMinus => DartElementType::MinusMinus,
397 crate::lexer::token_type::DartTokenType::PlusEqual => DartElementType::PlusEqual,
398 crate::lexer::token_type::DartTokenType::MinusEqual => DartElementType::MinusEqual,
399 crate::lexer::token_type::DartTokenType::StarEqual => DartElementType::StarEqual,
400 crate::lexer::token_type::DartTokenType::SlashEqual => DartElementType::SlashEqual,
401 crate::lexer::token_type::DartTokenType::PercentEqual => DartElementType::PercentEqual,
402 crate::lexer::token_type::DartTokenType::TildeSlashEqual => DartElementType::TildeSlashEqual,
403 crate::lexer::token_type::DartTokenType::LeftShiftEqual => DartElementType::LeftShiftEqual,
404 crate::lexer::token_type::DartTokenType::RightShiftEqual => DartElementType::RightShiftEqual,
405 crate::lexer::token_type::DartTokenType::AmpersandEqual => DartElementType::AmpersandEqual,
406 crate::lexer::token_type::DartTokenType::PipeEqual => DartElementType::PipeEqual,
407 crate::lexer::token_type::DartTokenType::CaretEqual => DartElementType::CaretEqual,
408 crate::lexer::token_type::DartTokenType::QuestionQuestionEqual => DartElementType::QuestionQuestionEqual,
409 crate::lexer::token_type::DartTokenType::Arrow => DartElementType::Arrow,
410 crate::lexer::token_type::DartTokenType::Dot => DartElementType::Dot,
411 crate::lexer::token_type::DartTokenType::DotDot => DartElementType::DotDot,
412 crate::lexer::token_type::DartTokenType::DotDotDot => DartElementType::DotDotDot,
413 crate::lexer::token_type::DartTokenType::QuestionDot => DartElementType::QuestionDot,
414 crate::lexer::token_type::DartTokenType::LeftParen => DartElementType::LeftParen,
415 crate::lexer::token_type::DartTokenType::RightParen => DartElementType::RightParen,
416 crate::lexer::token_type::DartTokenType::LeftBracket => DartElementType::LeftBracket,
417 crate::lexer::token_type::DartTokenType::RightBracket => DartElementType::RightBracket,
418 crate::lexer::token_type::DartTokenType::LeftBrace => DartElementType::LeftBrace,
419 crate::lexer::token_type::DartTokenType::RightBrace => DartElementType::RightBrace,
420 crate::lexer::token_type::DartTokenType::Semicolon => DartElementType::Semicolon,
421 crate::lexer::token_type::DartTokenType::Comma => DartElementType::Comma,
422 crate::lexer::token_type::DartTokenType::Colon => DartElementType::Colon,
423 crate::lexer::token_type::DartTokenType::At => DartElementType::At,
424 crate::lexer::token_type::DartTokenType::Hash => DartElementType::Hash,
425 crate::lexer::token_type::DartTokenType::LineComment => DartElementType::LineComment,
426 crate::lexer::token_type::DartTokenType::BlockComment => DartElementType::BlockComment,
427 crate::lexer::token_type::DartTokenType::DocComment => DartElementType::DocComment,
428 crate::lexer::token_type::DartTokenType::Error => DartElementType::Error,
429 crate::lexer::token_type::DartTokenType::Eof => DartElementType::Eof,
430 crate::lexer::token_type::DartTokenType::VariableDeclaration => DartElementType::VariableDeclaration,
431 }
432 }
433}