aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_mbe/src/mbe_expander.rs
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-04-19 19:41:55 +0100
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-04-19 19:41:55 +0100
commit0d39b1c3fa03a8032ea96be922fd62710f811aba (patch)
tree1c1e590c5bf75408915e12797b395b7a9d4484ac /crates/ra_mbe/src/mbe_expander.rs
parentd15abaa06fe65a01072c74db55786e97d17365b4 (diff)
parent210c762fe6edbe8382289ac71804bcfd82b251d4 (diff)
Merge #1172
1172: Temporarily disable tt matcher r=edwin0cheng a=edwin0cheng Temporarily fix for #1170 by disable the `tt` matcher. The reason for that is normally a `$($tt:tt))* wildcard matcher will be added for recurisve macro. If we have any bugs in macro expansion, the macro will infinite expanding recursively. Let me add a fused system and add more test in later PR and then re-enable this one Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_mbe/src/mbe_expander.rs')
-rw-r--r--crates/ra_mbe/src/mbe_expander.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/crates/ra_mbe/src/mbe_expander.rs b/crates/ra_mbe/src/mbe_expander.rs
index 01e29b556..86867111f 100644
--- a/crates/ra_mbe/src/mbe_expander.rs
+++ b/crates/ra_mbe/src/mbe_expander.rs
@@ -171,10 +171,14 @@ fn match_lhs(pattern: &crate::Subtree, input: &mut TtCursor) -> Result<Bindings,
171 input.eat_meta().ok_or(ExpandError::UnexpectedToken)?.clone(); 171 input.eat_meta().ok_or(ExpandError::UnexpectedToken)?.clone();
172 res.inner.insert(text.clone(), Binding::Simple(meta.into())); 172 res.inner.insert(text.clone(), Binding::Simple(meta.into()));
173 } 173 }
174 "tt" => { 174 // FIXME:
175 let token = input.eat().ok_or(ExpandError::UnexpectedToken)?.clone(); 175 // Enable followiing code when everything is fixed
176 res.inner.insert(text.clone(), Binding::Simple(token.into())); 176 // At least we can dogfood itself to not stackoverflow
177 } 177 //
178 // "tt" => {
179 // let token = input.eat().ok_or(ExpandError::UnexpectedToken)?.clone();
180 // res.inner.insert(text.clone(), Binding::Simple(token.into()));
181 // }
178 "item" => { 182 "item" => {
179 let item = 183 let item =
180 input.eat_item().ok_or(ExpandError::UnexpectedToken)?.clone(); 184 input.eat_item().ok_or(ExpandError::UnexpectedToken)?.clone();