def plan.rec

bolt@1.27.0.0 · src/syntax/bind.bend:490

import bolt@1.27.0.0/src/syntax/bind.bend as Bind
import Base
import bolt@1.27.0.0/src/syntax/lex.bend as Lex
import bolt@1.27.0.0/src/syntax/tree.bend as Tree

490# does a leaf of kind k record a binder?
491def plan.rec(mode: Mode, kk: Lex.TokKind, +rest: Tree.Node) -> Bool:
492  match mode kk:
493    case MCtor{} Lex.TUpper{}:
494      True{}
495    case MName{} Lex.TName{}:
496      True{}
497    case MName{} Lex.TUpper{}:
498      True{}
499    case MName{} Lex.TDotted{}:
500      True{}
501    case MTele{_kind} Lex.TOp{}:
502      plan.named(rest)
503    case MTele{_kind} Lex.TName{}:
504      True{}
505    case MTele{_kind} Lex.TUpper{}:
506      True{}
507    case MTeleType{_kind} Lex.TAll{}:
508      plan.typed(rest, False{})
509    case MLhs{_outer, _kind} Lex.TUpper{}:
510      Bool.not(plan.group(rest))
511    case MLhs{_outer, _kind} Lex.TName{}:
512      True{}
513    case MTerm{} Lex.TName{}:
514      plan.lam(rest)
515    case MTerm{} Lex.TAll{}:
516      plan.typed(rest, True{})
517    case MTerm{} Lex.TAmp{}:
518      plan.typed(rest, False{})
519    case _other _k:
520      False{}

Uses (9)

Used by (2)