Skip to content

Commit

Permalink
Merge pull request PaesslerAG#73 from vithnilica/master
Browse files Browse the repository at this point in the history
fix lost context in EvaluateWithContext
  • Loading branch information
generikvault committed Dec 5, 2021
2 parents 9d17f67 + 08a7385 commit 12d4df2
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions language.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,14 @@ func newLanguage() Language {

// NewEvaluable returns an Evaluable for given expression in the specified language
func (l Language) NewEvaluable(expression string) (Evaluable, error) {
return l.NewEvaluableWithContext(context.Background(), expression)
}

// NewEvaluableWithContext returns an Evaluable for given expression in the specified language using context
func (l Language) NewEvaluableWithContext(c context.Context, expression string) (Evaluable, error) {
p := newParser(expression, l)

eval, err := p.parse(context.Background())
eval, err := p.parse(c)
if err == nil && p.isCamouflaged() && p.lastScan != scanner.EOF {
err = p.camouflage
}
Expand All @@ -77,7 +82,7 @@ func (l Language) Evaluate(expression string, parameter interface{}) (interface{

// Evaluate given parameter with given expression using context
func (l Language) EvaluateWithContext(c context.Context, expression string, parameter interface{}) (interface{}, error) {
eval, err := l.NewEvaluable(expression)
eval, err := l.NewEvaluableWithContext(c, expression)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -182,7 +187,7 @@ func PrefixOperator(name string, e Evaluable) Language {
return e(c, a)
}
if eval.IsConst() {
v, err := prefix(context.Background(), nil)
v, err := prefix(c, nil)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 12d4df2

Please sign in to comment.