summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-02-18 15:02:02 +0100
committerLaurenz <laurmaedje@gmail.com>2022-02-18 16:57:53 +0100
commite01970b20a058ab1b4ebea916f229c9b706c84e4 (patch)
tree5c5efc75abd6e607bd45a0602603231edf520503 /src/parse
parent05ec0f993b4a1b8481e494ee16285d23f000872f (diff)
Basic show rules
Diffstat (limited to 'src/parse')
-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)
+ })
})
}