aboutsummaryrefslogtreecommitdiff
path: root/crates/mbe/src/parser.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2021-01-03 10:47:57 +0000
committerGitHub <[email protected]>2021-01-03 10:47:57 +0000
commit85cc3cfec99a7d232384efae010bfbc8224f1351 (patch)
treef02b994b580aacd64a3b8172a17fa464a52b4713 /crates/mbe/src/parser.rs
parent354c1daedc91abd15ca0ce6ada417053ce45ecfa (diff)
Revert "Proper handling $crate and local_inner_macros"
Diffstat (limited to 'crates/mbe/src/parser.rs')
-rw-r--r--crates/mbe/src/parser.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs
index 77cc739b6..2f3ebc831 100644
--- a/crates/mbe/src/parser.rs
+++ b/crates/mbe/src/parser.rs
@@ -8,7 +8,7 @@ use crate::{tt_iter::TtIter, ExpandError, MetaTemplate};
8 8
9#[derive(Clone, Debug, PartialEq, Eq)] 9#[derive(Clone, Debug, PartialEq, Eq)]
10pub(crate) enum Op { 10pub(crate) enum Op {
11 Var { name: SmolStr, kind: Option<SmolStr>, id: tt::TokenId }, 11 Var { name: SmolStr, kind: Option<SmolStr> },
12 Repeat { subtree: MetaTemplate, kind: RepeatKind, separator: Option<Separator> }, 12 Repeat { subtree: MetaTemplate, kind: RepeatKind, separator: Option<Separator> },
13 Leaf(tt::Leaf), 13 Leaf(tt::Leaf),
14 Subtree(MetaTemplate), 14 Subtree(MetaTemplate),
@@ -106,21 +106,18 @@ fn next_op<'a>(first: &tt::TokenTree, src: &mut TtIter<'a>, mode: Mode) -> Resul
106 } 106 }
107 let name = UNDERSCORE.clone(); 107 let name = UNDERSCORE.clone();
108 let kind = eat_fragment_kind(src, mode)?; 108 let kind = eat_fragment_kind(src, mode)?;
109 let id = punct.id; 109 Op::Var { name, kind }
110 Op::Var { name, kind, id }
111 } 110 }
112 tt::Leaf::Ident(ident) => { 111 tt::Leaf::Ident(ident) => {
113 let name = ident.text.clone(); 112 let name = ident.text.clone();
114 let kind = eat_fragment_kind(src, mode)?; 113 let kind = eat_fragment_kind(src, mode)?;
115 let id = ident.id; 114 Op::Var { name, kind }
116 Op::Var { name, kind, id }
117 } 115 }
118 tt::Leaf::Literal(lit) => { 116 tt::Leaf::Literal(lit) => {
119 if is_boolean_literal(&lit) { 117 if is_boolean_literal(&lit) {
120 let name = lit.text.clone(); 118 let name = lit.text.clone();
121 let kind = eat_fragment_kind(src, mode)?; 119 let kind = eat_fragment_kind(src, mode)?;
122 let id = lit.id; 120 Op::Var { name, kind }
123 Op::Var { name, kind, id }
124 } else { 121 } else {
125 bail!("bad var 2"); 122 bail!("bad var 2");
126 } 123 }