Replay each path's selectors through the walk for the family fence, require a key for a name, refuse a name shadowing a key, a table reading its own family and an ancestor's column clash, add the row node and family.go, and pin eight rows inline
Tests / vet + fmt + tests (pull_request) Successful in 1m8s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped

This commit is contained in:
2026-09-17 12:54:24 +02:00
parent fb83aa6178
commit 047237f361
14 changed files with 419 additions and 277 deletions
+2 -6
View File
@@ -63,9 +63,6 @@ func contained(n node) []namedNode {
case *table:
return append([]namedNode{{node: n.format}}, named(n.fields)...)
case *column:
if n.i < 0 {
return nil
}
var out []namedNode
for r := 0; r < n.t.rows(); r++ {
if cell := n.t.cellNode(r, n.i); cell != nil {
@@ -162,10 +159,9 @@ func renderEdges(n node) []renderEdge {
return es
case *table:
return []renderEdge{{to: n.format, label: "format"}}
case *row:
return []renderEdge{{to: n.t.format, label: "format"}}
case *column:
if n.i < 0 {
return []renderEdge{{to: n.t.format, label: "format"}}
}
var es []renderEdge
for _, c := range contained(n) {
es = append(es, renderEdge{to: c.node, label: n.t.columns[n.i]})