emmylua_parser/kind/
lua_non_std_symbol.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2#[repr(u64)]
3pub enum LuaNonStdSymbol {
4 DoubleSlash = 1, SlashStar, Backtick, PlusAssign, MinusAssign, StarAssign, SlashAssign, PercentAssign, CaretAssign, DoubleSlashAssign, PipeAssign, AmpAssign, ShiftLeftAssign, ShiftRightAssign, DoublePipe, DoubleAmp, Exclamation, NotEqual, Continue, }
24
25#[derive(Debug, Clone, Copy, PartialEq, Eq)]
26pub struct LuaNonStdSymbolSet(u64);
27
28impl Default for LuaNonStdSymbolSet {
29 fn default() -> Self {
30 Self::new()
31 }
32}
33
34impl LuaNonStdSymbolSet {
35 pub fn new() -> Self {
36 LuaNonStdSymbolSet(0)
37 }
38
39 pub fn add(&mut self, symbol: LuaNonStdSymbol) {
40 self.0 |= 1 << (symbol as u64);
41 }
42
43 pub fn extends(&mut self, other: Vec<LuaNonStdSymbol>) {
44 for symbol in other {
45 self.add(symbol);
46 }
47 }
48
49 pub fn support(&self, symbol: LuaNonStdSymbol) -> bool {
50 self.0 & (1 << (symbol as u64)) != 0
51 }
52}