ReusedBinder.scan: def of bend-lint-rules@0.2.0.0 Import: import bend-lint-rules@0.2.0.0/language/reused_binder.bend as ReusedBinder Lines 111-154 of bend-lint-rules@0.2.0.0/language/reused_binder.bend: https://jend.leeeet.dev/read.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&start_line=111&end_line=154 import Base import bend-lint-api@0.2.0.0/linter/lint.bend as Lint # The live uses of `b` among `nodes`, the nodes under one, after `seen`: `live` says whether they are live, `apart` # whether each is a path of its own (a match's), and `typed` whether only the first is live (an annotation's: the # second is a type); `at` counts the nodes. def scan( nodes: List<&2, Lint.Node>, +b: U32, +live: Bool, +apart: Bool, +typed: Bool, +at: U32, seen: Seen ) -> Seen: match nodes: case Nil{}: seen case Con{Lint.Node{+syntax, name, span, +kids, facts}, rest}: +node = {Lint.Node{syntax, name, span, kids, facts}: Lint.Node} +here = live && Bool.not(typed && U32.is_gt(at, 0)) scan( rest, b, live, apart, typed, (at + 1: U32), Seen.then( apart, seen, Seen.of( node, b, here, scan( kids, b, is_live_inside(node, here), is_match(syntax), is_annotation(syntax), 0, Seen{None{}, None{}} ) ) ) ) Uses (15): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.not https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_gt https://jend.leeeet.dev/definition.txt?path=bend-lint-api@0.2.0.0/linter/lint.bend&name=Node https://jend.leeeet.dev/definition.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&name=Seen https://jend.leeeet.dev/definition.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&name=Seen.of https://jend.leeeet.dev/definition.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&name=Seen.then https://jend.leeeet.dev/definition.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&name=is_annotation https://jend.leeeet.dev/definition.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&name=is_live_inside https://jend.leeeet.dev/definition.txt?path=bend-lint-rules@0.2.0.0/language/reused_binder.bend&name=is_match