From eeb82c5e9b969581f550f2234e71df073d9f0c35 Mon Sep 17 00:00:00 2001 From: Igor Shaposhnik Date: Wed, 30 Mar 2022 16:10:49 +0300 Subject: [PATCH] [wgsl] Make colon in case optional --- src/front/wgsl/mod.rs | 4 ++-- src/front/wgsl/tests.rs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index cd1f445c97..e73faf68b1 100644 --- a/src/front/wgsl/mod.rs +++ b/src/front/wgsl/mod.rs @@ -3722,7 +3722,7 @@ impl Parser { break value; } } else { - lexer.expect(Token::Separator(':'))?; + lexer.skip(Token::Separator(':')); break value; } cases.push(crate::SwitchCase { @@ -3742,7 +3742,7 @@ impl Parser { }); } (Token::Word("default"), _) => { - lexer.expect(Token::Separator(':'))?; + lexer.skip(Token::Separator(':')); let (fall_through, body) = self.parse_switch_case_body(lexer, context.reborrow())?; cases.push(crate::SwitchCase { diff --git a/src/front/wgsl/tests.rs b/src/front/wgsl/tests.rs index 281bd21f62..ffbe899365 100644 --- a/src/front/wgsl/tests.rs +++ b/src/front/wgsl/tests.rs @@ -329,6 +329,24 @@ fn parse_switch() { .unwrap(); } +#[test] +fn parse_switch_optional_colon_in_case() { + parse_str( + " + fn main() { + var pos: f32; + switch (3) { + case 0, 1 { pos = 0.0; } + case 2 { pos = 1.0; fallthrough; } + case 3 {} + default { pos = 3.0; } + } + } + ", + ) + .unwrap(); +} + #[test] fn parse_parentheses_switch() { parse_str(