summaryrefslogtreecommitdiff
path: root/src/parse/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse/mod.rs')
-rw-r--r--src/parse/mod.rs12
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)
})