File tree Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -374,18 +374,24 @@ func (p *parser) parseIdentifierExpression(token Token) Node {
374
374
}
375
375
376
376
func (p * parser ) parseClosure () Node {
377
- token := p .current
378
- p .expect (Bracket , "{" )
377
+ startToken := p .current
378
+ expectClosingBracket := false
379
+ if p .current .Is (Bracket , "{" ) {
380
+ p .next ()
381
+ expectClosingBracket = true
382
+ }
379
383
380
384
p .depth ++
381
385
node := p .parseExpression (0 )
382
386
p .depth --
383
387
384
- p .expect (Bracket , "}" )
388
+ if expectClosingBracket {
389
+ p .expect (Bracket , "}" )
390
+ }
385
391
closure := & ClosureNode {
386
392
Node : node ,
387
393
}
388
- closure .SetLocation (token .Location )
394
+ closure .SetLocation (startToken .Location )
389
395
return closure
390
396
}
391
397
Original file line number Diff line number Diff line change @@ -338,6 +338,16 @@ func TestParse(t *testing.T) {
338
338
& UnaryNode {Operator : "not" ,
339
339
Node : & IdentifierNode {Value : "in_var" }},
340
340
},
341
+ {
342
+ "all(Tickets, #)" ,
343
+ & BuiltinNode {
344
+ Name : "all" ,
345
+ Arguments : []Node {
346
+ & IdentifierNode {Value : "Tickets" },
347
+ & ClosureNode {
348
+ Node : & PointerNode {},
349
+ }}},
350
+ },
341
351
{
342
352
"all(Tickets, {.Price > 0})" ,
343
353
& BuiltinNode {
You can’t perform that action at this time.
0 commit comments