From 42c443bd5a4782d7ce7002264ddeee8a54c90469 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Tue, 29 Sep 2026 21:27:23 +0200 Subject: [PATCH] Build the draw fence's fold with the fence, deleting its lazy accessor --- data.go | 2 +- drawfence.go | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/data.go b/data.go index 28bd9be..5ee88f1 100644 --- a/data.go +++ b/data.go @@ -239,7 +239,7 @@ func checkNodeFences(s nodeScope) error { if err := s(heldCheck); err != nil { return err } - fence := &drawFence{} + fence := &drawFence{fold: newReadFold()} refs := false if err := s(func(path string, n node) error { if t, ok := n.(*template); ok && len(t.link.refs) > 0 { diff --git a/drawfence.go b/drawfence.go index 2eb6fd5..4d0a6a5 100644 --- a/drawfence.go +++ b/drawfence.go @@ -14,13 +14,6 @@ type drawFence struct { fold *readFold } -func (f *drawFence) reads() *readFold { - if f.fold == nil { - f.fold = newReadFold() - } - return f.fold -} - // checkDrawGroup refuses a draw group that splits nothing: one whose render reads every reference // path inside a repeat or a nested draw group, which draw apart from it whatever it names. func (f *drawFence) checkDrawGroup(path string, n node) error { @@ -28,7 +21,7 @@ func (f *drawFence) checkDrawGroup(path string, n node) error { if !ok || t.drawGroup == "" { return nil } - for _, r := range f.reads().rootReads(t) { + for _, r := range f.fold.rootReads(t) { if r.at.group == "" && r.draws() { return nil } @@ -41,7 +34,7 @@ func (f *drawFence) checkDraws(path string, n node) error { if !ok { return nil } - reads := f.reads().rootReads(t) + reads := f.fold.rootReads(t) if !anyDraws(reads) { return nil } @@ -59,7 +52,7 @@ func (f *drawFence) checkRecordDraws(path string, n node) error { if !ok || !t.isRecord { return nil } - reads := f.reads().columnReads(t, sortedNames(t.fields)) + reads := f.fold.columnReads(t, sortedNames(t.fields)) if !anyDraws(reads) { return nil }