aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_mbe/src/mbe_parser.rs
diff options
context:
space:
mode:
authorJeff Muizelaar <[email protected]>2019-02-02 17:11:12 +0000
committerJeff Muizelaar <[email protected]>2019-02-03 03:39:13 +0000
commit31d143ba18b74bdbe032a305c7705123e055b39e (patch)
tree00b4393d1e4caa2c77ee2f3492553d3a6bd01c62 /crates/ra_mbe/src/mbe_parser.rs
parent4c0ab7db85d2084870db4a2f92d92a3ae67a3bb1 (diff)
Fix macro_rules separator parsing.
macro_rules rules are separated by ';' including an optional ';' at the end
Diffstat (limited to 'crates/ra_mbe/src/mbe_parser.rs')
-rw-r--r--crates/ra_mbe/src/mbe_parser.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_mbe/src/mbe_parser.rs b/crates/ra_mbe/src/mbe_parser.rs
index a3e6abffc..abad2e8c8 100644
--- a/crates/ra_mbe/src/mbe_parser.rs
+++ b/crates/ra_mbe/src/mbe_parser.rs
@@ -7,7 +7,13 @@ pub(crate) fn parse(tt: &tt::Subtree) -> Option<crate::MacroRules> {
7 let mut parser = TtCursor::new(tt); 7 let mut parser = TtCursor::new(tt);
8 let mut rules = Vec::new(); 8 let mut rules = Vec::new();
9 while !parser.is_eof() { 9 while !parser.is_eof() {
10 rules.push(parse_rule(&mut parser)?) 10 rules.push(parse_rule(&mut parser)?);
11 if parser.expect_char(';') == None {
12 if !parser.is_eof() {
13 return None;
14 }
15 break;
16 }
11 } 17 }
12 Some(crate::MacroRules { rules }) 18 Some(crate::MacroRules { rules })
13} 19}