From 94c8bd229db654a1d54d2265bc3c4c6e24f5c1d0 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Tue, 29 Sep 2026 13:14:15 +0200 Subject: [PATCH] Give checkOwnFamily the scope walk's signature, and drop its wrapper --- data.go | 2 +- drawfence.go | 11 ----------- readsurvey.go | 9 +++++---- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/data.go b/data.go index 6c1b81b..f12e9c5 100644 --- a/data.go +++ b/data.go @@ -257,7 +257,7 @@ func checkNodeFences(s nodeScope) error { return err } if refs { - if err := s(checkOwnFamilies); err != nil { + if err := s(checkOwnFamily); err != nil { return err } if err := s(fence.checkDraws); err != nil { diff --git a/drawfence.go b/drawfence.go index 8caffb7..4d34014 100644 --- a/drawfence.go +++ b/drawfence.go @@ -24,17 +24,6 @@ func (f *drawFence) checkDrawGroup(path string, n node) error { return nil } -func checkOwnFamilies(path string, n node) error { - t, ok := n.(*template) - if !ok { - return nil - } - if err := checkOwnFamily(t); err != nil { - return fmt.Errorf("%s: %w", path, err) - } - return nil -} - func (f *drawFence) checkDraws(path string, n node) error { t, ok := n.(*template) if !ok { diff --git a/readsurvey.go b/readsurvey.go index e77903c..634ca83 100644 --- a/readsurvey.go +++ b/readsurvey.go @@ -258,11 +258,12 @@ func checkFamilies(reads []pathRead) error { // read draws its row without pinning it, so the family would draw apart from the row // it renders, whichever draws the reaching template holds. // docs/decisions.md#a-table-never-reaches-its-own-family-by-any-route -func checkOwnFamily(t *template) error { - own := t.site.table - if own == nil { +func checkOwnFamily(path string, n node) error { + t, isTemplate := n.(*template) + if !isTemplate || t.site.table == nil { return nil } + own := t.site.table seen := map[node]bool{} var find func(n node) (renderEdge, *table, bool) find = func(n node) (renderEdge, *table, bool) { @@ -283,7 +284,7 @@ func checkOwnFamily(t *template) error { return renderEdge{}, nil, false } if e, familyTable, found := find(t); found { - return fmt.Errorf("%s reads %s, a table of its own family, which a bare read of %s would draw apart from the row it renders; read the family from a template beside it, or add the value as a column", e.reached(), familyTable.segment, own.segment) + return fmt.Errorf("%s: %s reads %s, a table of its own family, which a bare read of %s would draw apart from the row it renders; read the family from a template beside it, or add the value as a column", path, e.reached(), familyTable.segment, own.segment) } return nil }