def args.go
bolt@1.27.0.0 · src/rules/calls.bend:95
import bolt@1.27.0.0/src/rules/calls.bend as Calls
import Base
import bolt@1.27.0.0/src/syntax/lex.bend as Lex
import bolt@1.27.0.0/src/syntax/tree.bend as Tree
import bolt@1.27.0.0/src/lazy/lazy.bend as Lazy
95
96def args.go(kids: Tree.Node, +cur: Tree.Node, +acc: List<&2, Tree.Node>) -> List<&2, Tree.Node>:
97 match kids:
98 case Tree.NCons{+h, +rest}:
99 Lazy.either(List<&2, Tree.Node>, kind.leaf(~Lex.is_comma, h),
100 _u => args.go(rest, Tree.NNil{}, Tree.reverse(cur, Tree.NNil{}) <> acc),
101 _v => args.go(rest, Tree.NCons{h, cur}, acc))
102 case other:
103 List.reverse(&2, Tree.Node, Tree.reverse(cur, Tree.NNil{}) <> acc)