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# The definitions among `nodes` that call themselves, as the check names them, onto `out`.
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)

Uses (11)

Used by (2)