Skip to content

Commit

Permalink
Wrap lambda ident params with different node (#124)
Browse files Browse the repository at this point in the history
* Wrap lambda ident params with different node

* Update tests
  • Loading branch information
darichey committed Aug 17, 2022
1 parent f075289 commit f8056c4
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 23 deletions.
8 changes: 7 additions & 1 deletion src/ast/nodes.rs
Expand Up @@ -359,10 +359,16 @@ impl PatEntry {
ng! { default, Expr, 1 }
}

node! { #[from(NODE_IDENT_PARAM)] struct IdentParam; }

impl IdentParam {
ng! { ident, Ident, 0 }
}

node! {
#[from(
Pattern,
Ident,
IdentParam,
)]
enum Param;
}
Expand Down
1 change: 1 addition & 0 deletions src/kinds.rs
Expand Up @@ -80,6 +80,7 @@ pub enum SyntaxKind {
NODE_STRING,
NODE_INTERPOL,
NODE_LAMBDA,
NODE_IDENT_PARAM,
// An old let { x = 92; body = x; } syntax
NODE_LEGACY_LET,
NODE_LET_IN,
Expand Down
2 changes: 2 additions & 0 deletions src/parser.rs
Expand Up @@ -517,6 +517,8 @@ where
match self.peek() {
Some(T![:]) => {
self.start_node_at(checkpoint, NODE_LAMBDA);
self.start_node_at(checkpoint, NODE_IDENT_PARAM);
self.finish_node();
self.bump();
self.parse_expr();
self.finish_node();
Expand Down
5 changes: 3 additions & 2 deletions test_data/parser/error/ws_belongs_to_root.expect
Expand Up @@ -15,8 +15,9 @@ NODE_ROOT@0..50
TOKEN_COMMENT@18..38 "# predicate to check"
TOKEN_WHITESPACE@38..43 "\n "
NODE_LAMBDA@43..48
NODE_IDENT@43..47
TOKEN_IDENT@43..47 "pred"
NODE_IDENT_PARAM@43..47
NODE_IDENT@43..47
TOKEN_IDENT@43..47 "pred"
TOKEN_COLON@47..48 ":"
TOKEN_WHITESPACE@48..50 "\n\n"

15 changes: 9 additions & 6 deletions test_data/parser/success/docs.expect
Expand Up @@ -20,15 +20,17 @@ NODE_ROOT@0..306
TOKEN_COMMENT@135..150 "# First integer"
TOKEN_WHITESPACE@150..155 "\n "
NODE_LAMBDA@155..195
NODE_IDENT@155..156
TOKEN_IDENT@155..156 "x"
NODE_IDENT_PARAM@155..156
NODE_IDENT@155..156
TOKEN_IDENT@155..156 "x"
TOKEN_COLON@156..157 ":"
TOKEN_WHITESPACE@157..162 "\n "
TOKEN_COMMENT@162..178 "# Second integer"
TOKEN_WHITESPACE@178..183 "\n "
NODE_LAMBDA@183..195
NODE_IDENT@183..184
TOKEN_IDENT@183..184 "y"
NODE_IDENT_PARAM@183..184
NODE_IDENT@183..184
TOKEN_IDENT@183..184 "y"
TOKEN_COLON@184..185 ":"
TOKEN_WHITESPACE@185..190 "\n "
NODE_BIN_OP@190..195
Expand All @@ -53,8 +55,9 @@ NODE_ROOT@0..306
TOKEN_ASSIGN@269..270 "="
TOKEN_WHITESPACE@270..271 " "
NODE_LAMBDA@271..303
NODE_IDENT@271..275
TOKEN_IDENT@271..275 "nums"
NODE_IDENT_PARAM@271..275
NODE_IDENT@271..275
TOKEN_IDENT@271..275 "nums"
TOKEN_COLON@275..276 ":"
TOKEN_WHITESPACE@276..277 " "
NODE_APPLY@277..303
Expand Down
5 changes: 3 additions & 2 deletions test_data/parser/success/lambda_is_not_uri.expect
@@ -1,7 +1,8 @@
NODE_ROOT@0..6
NODE_LAMBDA@0..6
NODE_IDENT@0..1
TOKEN_IDENT@0..1 "_"
NODE_IDENT_PARAM@0..1
NODE_IDENT@0..1
TOKEN_IDENT@0..1 "_"
TOKEN_COLON@1..2 ":"
NODE_IDENT@2..6
TOKEN_IDENT@2..6 "null"
Expand Down
5 changes: 3 additions & 2 deletions test_data/parser/success/lambda_list.expect
@@ -1,7 +1,8 @@
NODE_ROOT@0..7
NODE_LAMBDA@0..7
NODE_IDENT@0..1
TOKEN_IDENT@0..1 "m"
NODE_IDENT_PARAM@0..1
NODE_IDENT@0..1
TOKEN_IDENT@0..1 "m"
TOKEN_COLON@1..2 ":"
NODE_LIST@2..7
TOKEN_L_BRACK@2..3 "["
Expand Down
10 changes: 6 additions & 4 deletions test_data/parser/success/lambda_nested.expect
@@ -1,12 +1,14 @@
NODE_ROOT@0..11
NODE_LAMBDA@0..11
NODE_IDENT@0..1
TOKEN_IDENT@0..1 "a"
NODE_IDENT_PARAM@0..1
NODE_IDENT@0..1
TOKEN_IDENT@0..1 "a"
TOKEN_COLON@1..2 ":"
TOKEN_WHITESPACE@2..3 " "
NODE_LAMBDA@3..11
NODE_IDENT@3..4
TOKEN_IDENT@3..4 "b"
NODE_IDENT_PARAM@3..4
NODE_IDENT@3..4
TOKEN_IDENT@3..4 "b"
TOKEN_COLON@4..5 ":"
TOKEN_WHITESPACE@5..6 " "
NODE_BIN_OP@6..11
Expand Down
5 changes: 3 additions & 2 deletions test_data/parser/success/path_interp.expect
Expand Up @@ -10,8 +10,9 @@ NODE_ROOT@0..91
TOKEN_ASSIGN@8..9 "="
TOKEN_WHITESPACE@9..10 " "
NODE_LAMBDA@10..28
NODE_IDENT@10..11
TOKEN_IDENT@10..11 "f"
NODE_IDENT_PARAM@10..11
NODE_IDENT@10..11
TOKEN_IDENT@10..11 "f"
TOKEN_COLON@11..12 ":"
TOKEN_WHITESPACE@12..13 " "
NODE_PATH@13..28
Expand Down
10 changes: 6 additions & 4 deletions test_data/parser/success/trivia.expect
Expand Up @@ -12,15 +12,17 @@ NODE_ROOT@0..229
TOKEN_COMMENT@10..31 "/* the first value */"
TOKEN_WHITESPACE@31..32 " "
NODE_LAMBDA@32..66
NODE_IDENT@32..33
TOKEN_IDENT@32..33 "x"
NODE_IDENT_PARAM@32..33
NODE_IDENT@32..33
TOKEN_IDENT@32..33 "x"
TOKEN_COLON@33..34 ":"
TOKEN_WHITESPACE@34..35 " "
TOKEN_COMMENT@35..57 "/* the second value */"
TOKEN_WHITESPACE@57..58 " "
NODE_LAMBDA@58..66
NODE_IDENT@58..59
TOKEN_IDENT@58..59 "y"
NODE_IDENT_PARAM@58..59
NODE_IDENT@58..59
TOKEN_IDENT@58..59 "y"
TOKEN_COLON@59..60 ":"
TOKEN_WHITESPACE@60..61 " "
NODE_BIN_OP@61..66
Expand Down

0 comments on commit f8056c4

Please sign in to comment.