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 -3
View File
@@ -87,6 +87,8 @@ func (p *valueProof) of(n node) proven {
v = p.template(n)
case *column:
v = p.cells(n)
case *row:
v = unproven(fmt.Sprintf("%q renders a row of %s, which is composed text", n.t.format.format, n.t.category))
default:
v = unproven(`it reads a null, which renders "" outside its own column`)
}
@@ -96,9 +98,6 @@ func (p *valueProof) of(n node) proven {
// cells proves a table column over every cell it may render.
func (p *valueProof) cells(c *column) proven {
if c.i < 0 {
return unproven(fmt.Sprintf("%q renders a row of %s, which is composed text", c.t.format.format, c.t.category))
}
var v proven
for r := 0; r < c.t.rows(); r++ {
var w proven