@@ -93,7 +93,7 @@ func (o *fieldSet) Accept(c *adt.OpContext, f adt.Feature) bool {
93
93
return true
94
94
}
95
95
for _ , b := range o .bulk {
96
- if b .check .Match (c , f ) {
96
+ if b .check .Match (c , o . env , f ) {
97
97
return true
98
98
}
99
99
}
@@ -133,7 +133,7 @@ outer:
133
133
if matched && f .additional {
134
134
continue
135
135
}
136
- if f .check .Match (c , arc .Label ) {
136
+ if f .check .Match (c , o . env , arc .Label ) {
137
137
matched = true
138
138
if f .expr != nil {
139
139
arc .AddConjunct (adt .MakeConjunct (& bulkEnv , f .expr , o .id ))
@@ -178,9 +178,9 @@ func (o *fieldSet) AddOptional(c *adt.OpContext, x *adt.OptionalField) {
178
178
o .fields [p ].optional = append (o .fields [p ].optional , x )
179
179
}
180
180
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 ) {
182
182
// 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 })
184
184
}
185
185
186
186
func (o * fieldSet ) AddBulk (c * adt.OpContext , x * adt.BulkOptionalField ) {
@@ -218,12 +218,12 @@ func (o *fieldSet) AddEllipsis(c *adt.OpContext, x *adt.Ellipsis) {
218
218
}
219
219
220
220
type fieldMatcher interface {
221
- Match (c * adt.OpContext , f adt.Feature ) bool
221
+ Match (c * adt.OpContext , env * adt. Environment , f adt.Feature ) bool
222
222
}
223
223
224
224
type typeMatcher adt.Kind
225
225
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 {
227
227
switch f .Typ () {
228
228
case adt .StringLabel :
229
229
return adt .Kind (m )& adt .StringKind != 0
@@ -235,15 +235,14 @@ func (m typeMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
235
235
}
236
236
237
237
type dynamicMatcher struct {
238
- env * adt.Environment
239
238
expr adt.Expr
240
239
}
241
240
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 {
243
242
if ! f .IsRegular () || ! f .IsString () {
244
243
return false
245
244
}
246
- v , ok := c .Evaluate (m . env , m .expr )
245
+ v , ok := c .Evaluate (env , m .expr )
247
246
if ! ok {
248
247
return false
249
248
}
@@ -257,7 +256,7 @@ func (m dynamicMatcher) Match(c *adt.OpContext, f adt.Feature) bool {
257
256
258
257
type patternMatcher adt.Conjunct
259
258
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 {
261
260
v := adt.Vertex {}
262
261
v .AddConjunct (adt .Conjunct (m ))
263
262
label := f .ToValue (c )
0 commit comments