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
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{}