internal/core/eval: use env from fieldSet
Part of moving closedness restructuring.
Change-Id: I787efd65d253546ced89e667737bbf07a299eb8d
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/7981
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/internal/core/eval/closed.go b/internal/core/eval/closed.go
index 786ebfa..61ab1b3 100644
--- a/internal/core/eval/closed.go
+++ b/internal/core/eval/closed.go
@@ -733,7 +733,7 @@
}
for _, b := range o.bulk {
- if b.check.Match(ctx, f) {
+ if b.check.Match(ctx, o.env, f) {
return true, false
}
}
diff --git a/internal/core/eval/eval.go b/internal/core/eval/eval.go
index 4e86611..7f307cf 100644
--- a/internal/core/eval/eval.go
+++ b/internal/core/eval/eval.go
@@ -1669,7 +1669,7 @@
n.aStruct = s
n.aStructID = closeID
n.dynamicFields = append(n.dynamicFields, envDynamic{childEnv, x, closeID, nil})
- opt.AddDynamic(ctx, childEnv, x)
+ opt.AddDynamic(ctx, x)
case *adt.ForClause:
n.forClauses = append(n.forClauses, envYield{childEnv, x, closeID, nil})
diff --git a/internal/core/eval/optionals.go b/internal/core/eval/optionals.go
index 86c9227..4c6ae98 100644
--- a/internal/core/eval/optionals.go
+++ b/internal/core/eval/optionals.go
@@ -93,7 +93,7 @@
return true
}
for _, b := range o.bulk {
- if b.check.Match(c, f) {
+ if b.check.Match(c, o.env, f) {
return true
}
}
@@ -133,7 +133,7 @@
if matched && f.additional {
continue
}
- if f.check.Match(c, arc.Label) {
+ if f.check.Match(c, o.env, arc.Label) {
matched = true
if f.expr != nil {
arc.AddConjunct(adt.MakeConjunct(&bulkEnv, f.expr, o.id))
@@ -178,9 +178,9 @@
o.fields[p].optional = append(o.fields[p].optional, x)
}
-func (o *fieldSet) AddDynamic(c *adt.OpContext, env *adt.Environment, x *adt.DynamicField) {
+func (o *fieldSet) AddDynamic(c *adt.OpContext, x *adt.DynamicField) {
// not in bulk: count as regular field?
- o.bulk = append(o.bulk, bulkField{dynamicMatcher{env, x.Key}, nil, false})
+ o.bulk = append(o.bulk, bulkField{dynamicMatcher{x.Key}, nil, false})
}
func (o *fieldSet) AddBulk(c *adt.OpContext, x *adt.BulkOptionalField) {
@@ -218,12 +218,12 @@
}
type fieldMatcher interface {
- Match(c *adt.OpContext, f adt.Feature) bool
+ Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool
}
type typeMatcher adt.Kind
-func (m typeMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
+func (m typeMatcher) Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool {
switch f.Typ() {
case adt.StringLabel:
return adt.Kind(m)&adt.StringKind != 0
@@ -235,15 +235,14 @@
}
type dynamicMatcher struct {
- env *adt.Environment
expr adt.Expr
}
-func (m dynamicMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
+func (m dynamicMatcher) Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool {
if !f.IsRegular() || !f.IsString() {
return false
}
- v, ok := c.Evaluate(m.env, m.expr)
+ v, ok := c.Evaluate(env, m.expr)
if !ok {
return false
}
@@ -257,7 +256,7 @@
type patternMatcher adt.Conjunct
-func (m patternMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
+func (m patternMatcher) Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool {
v := adt.Vertex{}
v.AddConjunct(adt.Conjunct(m))
label := f.ToValue(c)