diff --git a/src/simd/_gen/unify/trace.go b/src/simd/_gen/unify/trace.go index b0aa35255e4..d28e9b6f879 100644 --- a/src/simd/_gen/unify/trace.go +++ b/src/simd/_gen/unify/trace.go @@ -132,10 +132,12 @@ func (t *tracer) traceUnify(v, w *Value, e envSet) { return } + t.enc.e = e // Interpret values w.r.t. e t.logf("Unify\n%s\nwith\n%s\nin\n%s", yamlf(" ", t.enc.value(v)), yamlf(" ", t.enc.value(w)), yamlf(" ", t.enc.env(e))) + t.enc.e = envSet{} if t.saveTree { if t.node == nil { diff --git a/src/simd/_gen/unify/yaml.go b/src/simd/_gen/unify/yaml.go index dadcd71dd7b..a7a1d986e4c 100644 --- a/src/simd/_gen/unify/yaml.go +++ b/src/simd/_gen/unify/yaml.go @@ -316,6 +316,9 @@ func (dec *yamlDecoder) value(node *yaml.Node) (vOut *Value, errOut error) { // Undo any effects on the environment. We *do* keep any named // variables that were added to the vars map in case they were // introduced within the element. + // + // TODO: If we change how we implement repeat nodes, we might be + // able to drop yamlEncoder.env and yamlDecoder.env. dec.env = origEnv // Add a generator function gen = append(gen, func(e envSet) (*Value, envSet) { @@ -444,7 +447,7 @@ func (c Closure) String() string { } func (v *Value) MarshalYAML() (any, error) { - enc := &yamlEncoder{} + enc := &yamlEncoder{e: topEnv} return enc.value(v), nil }