def defs

bend-lint-rules@0.2.0.0 · language/decreasing_call.bend:286

import bend-lint-rules@0.2.0.0/language/decreasing_call.bend as DecreasingCall
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

286# The findings in each definition among `nodes`, onto `out`. An @unsafe definition (`def f?`) may call itself freely.
287def defs(
288  nodes: List<&2, Lint.Node>,
289  +text: String,
290  out: List<&2, Lint.Finding>
291) -> List<&2, Lint.Finding>:
292  match nodes:
293    case Nil{}:
294      List.reverse(&2, Lint.Finding, out)
295    case Con{Lint.Node{Lint.Definition{t, False{}}, n, s, +k, f}, rest}:
296      +owner = {Lint.Node{Lint.Definition{t, False{}}, n, s, k, f}: Lint.Node}
297      defs(
298        rest,
299        text,
300        Lists.onto(
301          &2,
302          Lint.Finding,
303          Lint.visit(
304            ~Loop,
305            ~Lint.Finding,
306            ~visit,
307            Loop{Param.all(k, []), Lint.visit(~Unit, ~U32, ~let, Unit{}, [owner]), text},
308            [owner]
309          ),
310          out
311        )
312      )
313    case Con{node, rest}:
314      defs(rest, text, out)

Uses (15)

Used by (1)