Fix problem with parsing commas
I should probably rethink how delimited block expressions like if-blocks (and eventually for-blocks) work
This commit is contained in:
parent
c394b81746
commit
1bd48ed5db
@ -677,7 +677,7 @@ if (1, 5) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn need_to_fix_parser_to_make_work() {
|
fn tuple_pattern_4() {
|
||||||
let source = r#"
|
let source = r#"
|
||||||
if (1, 5) {
|
if (1, 5) {
|
||||||
is (10, x) -> x,
|
is (10, x) -> x,
|
||||||
|
@ -749,19 +749,26 @@ impl Parser {
|
|||||||
//TODO - delimited! isn't sophisticated enough to do thisa
|
//TODO - delimited! isn't sophisticated enough to do thisa
|
||||||
//let guards = delimited!(self, LCurlyBrace, guard_arm, Comma, RCurlyBrace);
|
//let guards = delimited!(self, LCurlyBrace, guard_arm, Comma, RCurlyBrace);
|
||||||
expect!(self, LCurlyBrace);
|
expect!(self, LCurlyBrace);
|
||||||
|
|
||||||
let mut guards = vec![];
|
let mut guards = vec![];
|
||||||
loop {
|
loop {
|
||||||
while let Newline = self.peek() {
|
|
||||||
self.next();
|
|
||||||
}
|
|
||||||
let guard_arm = self.guard_arm()?;
|
|
||||||
guards.push(guard_arm);
|
|
||||||
while let Newline = self.peek() {
|
|
||||||
self.next();
|
|
||||||
}
|
|
||||||
match self.peek() {
|
match self.peek() {
|
||||||
Comma => {self.next(); continue },
|
RCurlyBrace | EOF => break,
|
||||||
_ => break
|
Semicolon | Newline => { self.next(); continue},
|
||||||
|
_ => {
|
||||||
|
let guard_arm = self.guard_arm()?;
|
||||||
|
guards.push(guard_arm);
|
||||||
|
loop {
|
||||||
|
match self.peek() {
|
||||||
|
Semicolon | Newline => { self.next(); continue; },
|
||||||
|
_ => break,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let RCurlyBrace = self.peek() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
expect!(self, Comma);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
expect!(self, RCurlyBrace);
|
expect!(self, RCurlyBrace);
|
||||||
|
Loading…
Reference in New Issue
Block a user