}
TokenStream::from(quote! {
- #[allow(non_upper_case_globals)]
- pub mod keywords {
- use super::{Symbol, Ident};
- #[derive(Clone, Copy, PartialEq, Eq)]
- pub struct Keyword {
- ident: Ident,
- }
- impl Keyword {
- #[inline] pub fn ident(self) -> Ident { self.ident }
- #[inline] pub fn name(self) -> Symbol { self.ident.name }
- }
-
- #keyword_stream
-
- impl std::str::FromStr for Keyword {
- type Err = ();
-
- fn from_str(s: &str) -> Result<Self, ()> {
- match s {
- #from_str_stream
- _ => Err(()),
+ macro_rules! keywords {
+ () => {
+ #keyword_stream
+
+ impl std::str::FromStr for Keyword {
+ type Err = ();
+
+ fn from_str(s: &str) -> Result<Self, ()> {
+ match s {
+ #from_str_stream
+ _ => Err(()),
+ }
}
}
}
}
- #[allow(non_upper_case_globals)]
- pub mod symbols {
- use super::Symbol;
-
- #symbols_stream
+ macro_rules! symbols {
+ () => {
+ #symbols_stream
+ }
}
impl Interner {
}
}
+pub mod keywords {
+ use super::{Symbol, Ident};
+
+ #[derive(Clone, Copy, PartialEq, Eq)]
+ pub struct Keyword {
+ ident: Ident,
+ }
+
+ impl Keyword {
+ #[inline]
+ pub fn ident(self) -> Ident {
+ self.ident
+ }
+
+ #[inline]
+ pub fn name(self) -> Symbol {
+ self.ident.name
+ }
+ }
+
+ keywords!();
+}
+
+pub mod symbols {
+ use super::Symbol;
+ symbols!();
+}
+
impl Symbol {
fn is_used_keyword_2018(self) -> bool {
self == keywords::Dyn.name()