From e01970b20a058ab1b4ebea916f229c9b706c84e4 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 18 Feb 2022 15:02:02 +0100 Subject: Basic show rules --- src/parse/mod.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/parse') 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) + }) }) } -- cgit v1.2.3