diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-03-21 13:08:18 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-03-21 13:08:18 +0100 |
| commit | 53b57d82942537929463793b3a50654462cf78d7 (patch) | |
| tree | 3177d791d76c051aaf45fa991ed7210fb99ec87b /src/syntax | |
| parent | c913271b2965027953c71a0b8f85a8c7cb802444 (diff) | |
Fix show rule colon error message
Diffstat (limited to 'src/syntax')
| -rw-r--r-- | src/syntax/parser.rs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs index c44e8cb3..0431768e 100644 --- a/src/syntax/parser.rs +++ b/src/syntax/parser.rs @@ -872,11 +872,20 @@ fn set_rule(p: &mut Parser) { fn show_rule(p: &mut Parser) { let m = p.marker(); p.assert(SyntaxKind::Show); + p.unskip(); + let m2 = p.marker(); + p.skip(); + if !p.at(SyntaxKind::Colon) { code_expr(p); } - p.expect(SyntaxKind::Colon); - code_expr(p); + + if p.eat_if(SyntaxKind::Colon) { + code_expr(p); + } else { + p.expected_at(m2, "colon"); + } + p.wrap(m, SyntaxKind::ShowRule); } @@ -1295,6 +1304,12 @@ impl<'s> Parser<'s> { self.skip(); } + fn expected_at(&mut self, m: Marker, thing: &str) { + let message = eco_format!("expected {}", thing); + let error = SyntaxNode::error(message, "", ErrorPos::Full); + self.nodes.insert(m.0, error); + } + fn unexpected(&mut self) { self.unskip(); while self |
