oak_solidity/parser/
element_type.rs1use oak_core::{ElementType, Parser, UniversalElementRole};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
7pub enum SolidityElementType {
8 SourceFile,
9 Eof,
10 Error,
11}
12
13impl oak_core::TokenType for SolidityElementType {
14 type Role = oak_core::UniversalTokenRole;
15 const END_OF_STREAM: Self = Self::Eof;
16
17 fn role(&self) -> Self::Role {
18 match self {
19 _ => oak_core::UniversalTokenRole::None,
20 }
21 }
22}
23
24impl SolidityElementType {
25 pub fn is_token_type(&self) -> bool {
26 true
27 }
28
29 pub fn is_element_type(&self) -> bool {
30 false
31 }
32}
33
34impl ElementType for SolidityElementType {
35 type Role = UniversalElementRole;
36
37 fn role(&self) -> Self::Role {
38 match self {
39 _ => UniversalElementRole::None,
40 }
41 }
42}
43
44impl From<crate::lexer::token_type::SolidityTokenType> for SolidityElementType {
45 fn from(token: crate::lexer::token_type::SolidityTokenType) -> Self {
46 unsafe { std::mem::transmute(token) }
47 }
48}