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.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs
index fbace15b..c14c45cf 100644
--- a/src/parse/mod.rs
+++ b/src/parse/mod.rs
@@ -752,9 +752,20 @@ fn set_expr(p: &mut Parser) -> ParseResult {
fn show_expr(p: &mut Parser) -> ParseResult {
p.perform(NodeKind::ShowExpr, |p| {
p.eat_assert(&NodeKind::Show);
- expr(p)?;
- p.eat_expect(&NodeKind::As)?;
- expr(p)
+ ident(p)?;
+ if !p.at(&NodeKind::LeftParen) {
+ p.expected_found("parameter list");
+ return Err(ParseError);
+ }
+ p.perform(NodeKind::Closure, |p| {
+ let marker = p.marker();
+ p.start_group(Group::Paren);
+ collection(p);
+ p.end_group();
+ params(p, marker);
+ p.eat_expect(&NodeKind::As)?;
+ expr(p)
+ })
})
}