def loops
bend-lint-rules@0.2.0.0 · performance/loop_invariant_call.bend:34
import bend-lint-rules@0.2.0.0/performance/loop_invariant_call.bend as LoopInvariantCall
import Base
import bend-lint-api@0.2.0.0/linter/lint.bend as Lint
import bend-lint-api@0.2.0.0/shared/lists.bend as Lists
34
35def loops(nodes: List<&2, Lint.Node>, out: List<&2, String>) -> List<&2, String>:
36 match nodes:
37 case Nil{}:
38 out
39 case Con{Lint.Node{Lint.Definition{+t, u}, n, s, k, f}, rest}:
40 loops(
41 rest,
42 Lists.push(
43 String,
44 Lists.when(
45 String,
46 Bool.not(
47 List.is_empty(
48 &2,
49 Unit,
50 Lint.visit(
51 ~Unit,
52 ~Unit,
53 ~loop.visit,
54 Unit{},
55 [Lint.Node{Lint.Definition{t, u}, n, s, k, f}]
56 )
57 )
58 ),
59 t
60 ),
61 out
62 )
63 )
64 case Con{node, rest}:
65 loops(rest, out)