diff --git a/ast.go b/ast.go index 8d015d1..bc1f187 100644 --- a/ast.go +++ b/ast.go @@ -111,11 +111,10 @@ func (ast *ast) Eval(ctx kern.ExprContext) (result any, err error) { if r := recover(); r != nil { if errVal, ok := r.(error); ok { err = errVal + } else { + err = errors.New("unexpected error while evaluating the expression") } } - if err == nil { - err = errors.New("unexpected error while evaluating the expression") - } }() ast.Finish() @@ -123,8 +122,8 @@ func (ast *ast) Eval(ctx kern.ExprContext) (result any, err error) { if ast.root != nil { // initDefaultVars(ctx) if ast.forest != nil { - for _, root := range ast.forest { - if result, err = root.Compute(ctx); err == nil { + for _, tree := range ast.forest { + if result, err = tree.Compute(ctx); err == nil { ctx.UnsafeSetVar(kern.ControlLastResult, result) } else { //err = fmt.Errorf("error in expression nr %d: %v", i+1, err) diff --git a/parser.go b/parser.go index f99823b..69d30d6 100644 --- a/parser.go +++ b/parser.go @@ -386,11 +386,10 @@ func (parser *parser) Parse(scanner *scanner, termSymbols ...Symbol) (tree *ast, if r := recover(); r != nil { if errVal, ok := r.(error); ok { err = errVal + } else { + err = errors.New("unexpected error while parsing the expression") } } - if err == nil { - err = errors.New("unexpected error while parsing the expression") - } }() termSymbols = append(termSymbols, SymEos) return parser.parseGeneral(scanner, allowMultiExpr, termSymbols...)