Give a pick key one type, pickKey, and key every read's levels from the head its steps start at to its leaf

This commit is contained in:
2026-10-05 23:25:46 +02:00
committed by Lillem4n
parent b726edd7cb
commit 44b6f1ef89
10 changed files with 75 additions and 73 deletions
+2 -2
View File
@@ -263,7 +263,7 @@ func probePath(n node, tail []string, steps []pathStep) ([]pathStep, error) {
// For a read through a name, memo keeps the variant drawn at each of levels, so paths sharing a
// prefix share it. It returns the leaf and the pins its row is in: a step down after a step up draws
// afresh, into pins of its own, which memo shares with every path stepping down there.
func drawSteps(s *drawstate.State, n node, steps []pathStep, pins *pinSet, memo *drawMemo, levels []string) (node, *pinSet) {
func drawSteps(s *drawstate.State, n node, steps []pathStep, pins *pinSet, memo *drawMemo, levels []pickKey) (node, *pinSet) {
var climbed *rowsTable
for _, st := range steps {
if c, ok := n.(*choice); ok {
@@ -313,7 +313,7 @@ func (t *table) drawStep(s *drawstate.State, st pathStep, pins *pinSet) node {
panic(invariant.Broken("drawStep has no case for step kind %d", st.kind))
}
func drawVariant(s *drawstate.State, c *choice, memo *drawMemo, levels []string, at int) node {
func drawVariant(s *drawstate.State, c *choice, memo *drawMemo, levels []pickKey, at int) node {
if memo == nil {
return resolveChoice(s, c)
}