Skip to content

Commit 359685a

Browse files
committed
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 <[email protected]> Reviewed-by: Marcel van Lohuizen <[email protected]>
1 parent 93c79a3 commit 359685a

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

internal/core/eval/closed.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,7 @@ func (c *acceptor) verifySets(ctx *adt.OpContext, id adt.ID, f adt.Feature) (fou
733733
}
734734

735735
for _, b := range o.bulk {
736-
if b.check.Match(ctx, f) {
736+
if b.check.Match(ctx, o.env, f) {
737737
return true, false
738738
}
739739
}

internal/core/eval/eval.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1669,7 +1669,7 @@ func (n *nodeContext) addStruct(
16691669
n.aStruct = s
16701670
n.aStructID = closeID
16711671
n.dynamicFields = append(n.dynamicFields, envDynamic{childEnv, x, closeID, nil})
1672-
opt.AddDynamic(ctx, childEnv, x)
1672+
opt.AddDynamic(ctx, x)
16731673

16741674
case *adt.ForClause:
16751675
n.forClauses = append(n.forClauses, envYield{childEnv, x, closeID, nil})

internal/core/eval/optionals.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (o *fieldSet) Accept(c *adt.OpContext, f adt.Feature) bool {
9393
return true
9494
}
9595
for _, b := range o.bulk {
96-
if b.check.Match(c, f) {
96+
if b.check.Match(c, o.env, f) {
9797
return true
9898
}
9999
}
@@ -133,7 +133,7 @@ outer:
133133
if matched && f.additional {
134134
continue
135135
}
136-
if f.check.Match(c, arc.Label) {
136+
if f.check.Match(c, o.env, arc.Label) {
137137
matched = true
138138
if f.expr != nil {
139139
arc.AddConjunct(adt.MakeConjunct(&bulkEnv, f.expr, o.id))
@@ -178,9 +178,9 @@ func (o *fieldSet) AddOptional(c *adt.OpContext, x *adt.OptionalField) {
178178
o.fields[p].optional = append(o.fields[p].optional, x)
179179
}
180180

181-
func (o *fieldSet) AddDynamic(c *adt.OpContext, env *adt.Environment, x *adt.DynamicField) {
181+
func (o *fieldSet) AddDynamic(c *adt.OpContext, x *adt.DynamicField) {
182182
// not in bulk: count as regular field?
183-
o.bulk = append(o.bulk, bulkField{dynamicMatcher{env, x.Key}, nil, false})
183+
o.bulk = append(o.bulk, bulkField{dynamicMatcher{x.Key}, nil, false})
184184
}
185185

186186
func (o *fieldSet) AddBulk(c *adt.OpContext, x *adt.BulkOptionalField) {
@@ -218,12 +218,12 @@ func (o *fieldSet) AddEllipsis(c *adt.OpContext, x *adt.Ellipsis) {
218218
}
219219

220220
type fieldMatcher interface {
221-
Match(c *adt.OpContext, f adt.Feature) bool
221+
Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool
222222
}
223223

224224
type typeMatcher adt.Kind
225225

226-
func (m typeMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
226+
func (m typeMatcher) Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool {
227227
switch f.Typ() {
228228
case adt.StringLabel:
229229
return adt.Kind(m)&adt.StringKind != 0
@@ -235,15 +235,14 @@ func (m typeMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
235235
}
236236

237237
type dynamicMatcher struct {
238-
env *adt.Environment
239238
expr adt.Expr
240239
}
241240

242-
func (m dynamicMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
241+
func (m dynamicMatcher) Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool {
243242
if !f.IsRegular() || !f.IsString() {
244243
return false
245244
}
246-
v, ok := c.Evaluate(m.env, m.expr)
245+
v, ok := c.Evaluate(env, m.expr)
247246
if !ok {
248247
return false
249248
}
@@ -257,7 +256,7 @@ func (m dynamicMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
257256

258257
type patternMatcher adt.Conjunct
259258

260-
func (m patternMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
259+
func (m patternMatcher) Match(c *adt.OpContext, env *adt.Environment, f adt.Feature) bool {
261260
v := adt.Vertex{}
262261
v.AddConjunct(adt.Conjunct(m))
263262
label := f.ToValue(c)

0 commit comments

Comments
 (0)