diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-02-18 15:02:02 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-02-18 16:57:53 +0100 |
| commit | e01970b20a058ab1b4ebea916f229c9b706c84e4 (patch) | |
| tree | 5c5efc75abd6e607bd45a0602603231edf520503 /src/parse | |
| parent | 05ec0f993b4a1b8481e494ee16285d23f000872f (diff) | |
Basic show rules
Diffstat (limited to 'src/parse')
| -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) + }) }) } |
