def is_proof

bend-lint-rules@0.2.0.0 · performance/loop_invariant_call.bend:243

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

243# Whether a definition's nodes say it is a proof: it has no return type written (it fills a law), or it returns an
244# equality.
245def is_proof(nodes: List<&2, Lint.Node>) -> Bool:
246  match nodes:
247    case Nil{}:
248      True{}
249    case Con{
250      Lint.Node{Lint.Returns{}, n, s, Con{Lint.Node{Lint.Equality{}, en, es, ek, ef}, k}, f},
251      rest
252    }:
253      True{}
254    case Con{Lint.Node{Lint.Returns{}, n, s, k, f}, rest}:
255      False{}
256    case Con{node, rest}:
257      is_proof(rest)

Uses (4)

Used by (2)