def search.reads

bolt@1.27.0.0 · src/rules/correctness/pick.bend:133

import bolt@1.27.0.0/src/rules/correctness/pick.bend as Pick
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

133# does a name leaf under the node spell xx?
134def search.reads(nn: Tree.Node, +xx: String) -> Bool:
135  match nn:
136    case Tree.Leaf{Lex.Tok{k, +t, _l, _c}}:
137      Bool.and(Lex.is_name(k), String.eq(t, xx))
138    case Tree.Group{_o, kids, _cl}:
139      search.reads(kids, xx)
140    case Tree.Stmt{_k, kids, body}:
141      +a = search.reads(kids, xx)
142      +b = search.reads(body, xx)
143      Bool.or(a, b)
144    case Tree.NCons{h, t}:
145      +a = search.reads(h, xx)
146      +b = search.reads(t, xx)
147      Bool.or(a, b)
148    case Tree.NNil{}:
149      False{}

Uses (8)

Used by (2)