diff options
Diffstat (limited to 'src/parse/mod.rs')
| -rw-r--r-- | src/parse/mod.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 32d61885..9f4860e7 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -807,9 +807,15 @@ fn set_expr(p: &mut Parser) -> ParseResult { fn show_expr(p: &mut Parser) -> ParseResult { p.perform(NodeKind::ShowExpr, |p| { p.assert(NodeKind::Show); - ident(p)?; - p.expect(NodeKind::Colon)?; - ident(p)?; + let marker = p.marker(); + expr(p)?; + if p.eat_if(NodeKind::Colon) { + marker.filter_children(p, |child| match child.kind() { + NodeKind::Ident(_) | NodeKind::Colon => Ok(()), + _ => Err("expected identifier"), + }); + expr(p)?; + } p.expect(NodeKind::As)?; expr(p) }) |
