Implemented T! macro for syntax kinds

This commit is contained in:
Sergey Parilin 2019-05-08 18:35:32 +03:00
parent ef782adc29
commit 57bb618fd3
6 changed files with 114 additions and 1 deletions

View file

@ -241,6 +241,101 @@ pub enum SyntaxKind {
}
use self::SyntaxKind::*;
#[macro_export]
macro_rules! T {
(;) => { $crate::SyntaxKind::SEMI };
(,) => { $crate::SyntaxKind::COMMA };
(() => { $crate::SyntaxKind::L_PAREN };
()) => { $crate::SyntaxKind::R_PAREN };
('{') => { $crate::SyntaxKind::L_CURLY };
('}') => { $crate::SyntaxKind::R_CURLY };
('[') => { $crate::SyntaxKind::L_BRACK };
(']') => { $crate::SyntaxKind::R_BRACK };
(<) => { $crate::SyntaxKind::L_ANGLE };
(>) => { $crate::SyntaxKind::R_ANGLE };
(@) => { $crate::SyntaxKind::AT };
(#) => { $crate::SyntaxKind::POUND };
(~) => { $crate::SyntaxKind::TILDE };
(?) => { $crate::SyntaxKind::QUESTION };
($) => { $crate::SyntaxKind::DOLLAR };
(&) => { $crate::SyntaxKind::AMP };
(|) => { $crate::SyntaxKind::PIPE };
(+) => { $crate::SyntaxKind::PLUS };
(*) => { $crate::SyntaxKind::STAR };
(/) => { $crate::SyntaxKind::SLASH };
(^) => { $crate::SyntaxKind::CARET };
(%) => { $crate::SyntaxKind::PERCENT };
(_) => { $crate::SyntaxKind::UNDERSCORE };
(.) => { $crate::SyntaxKind::DOT };
(..) => { $crate::SyntaxKind::DOTDOT };
(...) => { $crate::SyntaxKind::DOTDOTDOT };
(..=) => { $crate::SyntaxKind::DOTDOTEQ };
(:) => { $crate::SyntaxKind::COLON };
(::) => { $crate::SyntaxKind::COLONCOLON };
(=) => { $crate::SyntaxKind::EQ };
(==) => { $crate::SyntaxKind::EQEQ };
(=>) => { $crate::SyntaxKind::FAT_ARROW };
(!) => { $crate::SyntaxKind::EXCL };
(!=) => { $crate::SyntaxKind::NEQ };
(-) => { $crate::SyntaxKind::MINUS };
(->) => { $crate::SyntaxKind::THIN_ARROW };
(<=) => { $crate::SyntaxKind::LTEQ };
(>=) => { $crate::SyntaxKind::GTEQ };
(+=) => { $crate::SyntaxKind::PLUSEQ };
(-=) => { $crate::SyntaxKind::MINUSEQ };
(|=) => { $crate::SyntaxKind::PIPEEQ };
(&=) => { $crate::SyntaxKind::AMPEQ };
(^=) => { $crate::SyntaxKind::CARETEQ };
(/=) => { $crate::SyntaxKind::SLASHEQ };
(*=) => { $crate::SyntaxKind::STAREQ };
(%=) => { $crate::SyntaxKind::PERCENTEQ };
(&&) => { $crate::SyntaxKind::AMPAMP };
(||) => { $crate::SyntaxKind::PIPEPIPE };
(<<) => { $crate::SyntaxKind::SHL };
(>>) => { $crate::SyntaxKind::SHR };
(<<=) => { $crate::SyntaxKind::SHLEQ };
(>>=) => { $crate::SyntaxKind::SHREQ };
(async) => { $crate::SyntaxKind::ASYNC_KW };
(use) => { $crate::SyntaxKind::USE_KW };
(fn) => { $crate::SyntaxKind::FN_KW };
(struct) => { $crate::SyntaxKind::STRUCT_KW };
(enum) => { $crate::SyntaxKind::ENUM_KW };
(trait) => { $crate::SyntaxKind::TRAIT_KW };
(impl) => { $crate::SyntaxKind::IMPL_KW };
(dyn) => { $crate::SyntaxKind::DYN_KW };
(true) => { $crate::SyntaxKind::TRUE_KW };
(false) => { $crate::SyntaxKind::FALSE_KW };
(as) => { $crate::SyntaxKind::AS_KW };
(extern) => { $crate::SyntaxKind::EXTERN_KW };
(crate) => { $crate::SyntaxKind::CRATE_KW };
(mod) => { $crate::SyntaxKind::MOD_KW };
(pub) => { $crate::SyntaxKind::PUB_KW };
(self) => { $crate::SyntaxKind::SELF_KW };
(super) => { $crate::SyntaxKind::SUPER_KW };
(in) => { $crate::SyntaxKind::IN_KW };
(where) => { $crate::SyntaxKind::WHERE_KW };
(for) => { $crate::SyntaxKind::FOR_KW };
(loop) => { $crate::SyntaxKind::LOOP_KW };
(while) => { $crate::SyntaxKind::WHILE_KW };
(continue) => { $crate::SyntaxKind::CONTINUE_KW };
(break) => { $crate::SyntaxKind::BREAK_KW };
(if) => { $crate::SyntaxKind::IF_KW };
(else) => { $crate::SyntaxKind::ELSE_KW };
(match) => { $crate::SyntaxKind::MATCH_KW };
(const) => { $crate::SyntaxKind::CONST_KW };
(static) => { $crate::SyntaxKind::STATIC_KW };
(mut) => { $crate::SyntaxKind::MUT_KW };
(unsafe) => { $crate::SyntaxKind::UNSAFE_KW };
(type) => { $crate::SyntaxKind::TYPE_KW };
(ref) => { $crate::SyntaxKind::REF_KW };
(let) => { $crate::SyntaxKind::LET_KW };
(move) => { $crate::SyntaxKind::MOVE_KW };
(return) => { $crate::SyntaxKind::RETURN_KW };
(auto) => { $crate::SyntaxKind::AUTO_KW };
(default) => { $crate::SyntaxKind::DEFAULT_KW };
(union) => { $crate::SyntaxKind::UNION_KW };
}
impl From<u16> for SyntaxKind {
fn from(d: u16) -> SyntaxKind {
assert!(d <= (__LAST as u16));