Commit b622b65
committed
Add Parenthesized flag to Lambda AST node to fix multi-param lambda merging
When parsing multi-param lambdas like `acc,x -> body` where parameters are
separated by commas without parentheses, the parser was incorrectly merging
preceding identifiers with explicitly parenthesized lambdas like `(x -> y)`.
This fix:
- Adds `Parenthesized bool` field to ast.Lambda
- Sets this flag when a lambda is wrapped in explicit parentheses
- Checks the flag in mergeMultiParamLambdas to skip parenthesized lambdas
This correctly parses:
- `arrayFold(acc,x -> body, arr, init)` - merges acc into lambda params
- `delay(time, (time -> 0.5), ...)` - keeps time as separate argument
Fixes all 17 statements in 02718_array_fold test and 3 in 02418_aggregate_combinators.1 parent 9239c04 commit b622b65
4 files changed
Lines changed: 65 additions & 31 deletions
File tree
- ast
- parser
- testdata
- 02418_aggregate_combinators
- 02718_array_fold
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1440 | 1440 | | |
1441 | 1441 | | |
1442 | 1442 | | |
1443 | | - | |
1444 | | - | |
1445 | | - | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
1446 | 1447 | | |
1447 | 1448 | | |
1448 | 1449 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
161 | 213 | | |
162 | 214 | | |
163 | 215 | | |
| |||
1019 | 1071 | | |
1020 | 1072 | | |
1021 | 1073 | | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
1022 | 1081 | | |
1023 | 1082 | | |
1024 | 1083 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
| 1 | + | |
0 commit comments