diff options
Diffstat (limited to 'src/parse/mod.rs')
| -rw-r--r-- | src/parse/mod.rs | 17 |
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) + }) }) } |
