def is_live.go
bend-lint-api@0.2.0.0 · linter/lint.bend:400
import bend-lint-api@0.2.0.0/linter/lint.bend as Lint
import Base
400def is_live.go(path: List<&2, Above>, ok: Bool) -> Bool:
401 match path ok:
402 case _ False{}:
403 False{}
404 case Nil{} True{}:
405 False{}
406 case Con{Above{Node{Body{}, n, s, k, f}, at}, rest} True{}:
407 True{}
408 case Con{Above{Node{Annotation{}, n, s, k, f}, at}, rest} True{}:
409 is_live.go(rest, U32.is_eq(at, 0))
410 case Con{Above{Node{Application{}, n, s, k, f}, at}, rest} True{}:
411 is_live.go(rest, Bool.not(is_pair(k)))
412 case Con{Above{Node{Equality{}, n, s, k, f}, at}, rest} True{}:
413 False{}
414 case Con{Above{Node{Forall{b, q}, n, s, k, f}, at}, rest} True{}:
415 False{}
416 case Con{Above{Node{TypeApplication{t}, n, s, k, f}, at}, rest} True{}:
417 False{}
418 case Con{a, rest} True{}:
419 is_live.go(rest, True{})