def nullable

bend-schema-lib@0.4.1.0 · core.bend:1718

import bend-schema-lib@0.4.1.0/core.bend as Core
import Base

1718def nullable(s: Schema) -> Bool:
1719  match s:
1720    case SOpt{i}:
1721      True{}
1722    case SOptional{i}:
1723      True{}  # absent and the inner's own null read as the same None
1724    case SRule{s2, tag}:
1725      nullable(s2)
1726    case SStrict{s2}:
1727      nullable(s2)
1728    case SStrLen{lo, hi, s2}:
1729      nullable(s2)
1730    case SListLen{lo, hi, s2}:
1731      nullable(s2)
1732    case STagged{k, n, cs, rest}:
1733      nullable(rest)
1734    case SVariant{n, vs, rest}:
1735      nullable(rest)
1736    case SEither{l, r}:
1737      Bool.or(nullable(l), nullable(r))  # a null would read as the inner's
1738    case _:
1739      False{}

Uses (3)

Used by (1)