ast.go, pasrse.go: fixed the recover routine

This commit is contained in:
Celestino Amoroso 2026-05-01 17:03:44 +02:00
parent f2d1f23774
commit 75ed88915d
2 changed files with 6 additions and 8 deletions

9
ast.go
View File

@ -111,11 +111,10 @@ func (ast *ast) Eval(ctx kern.ExprContext) (result any, err error) {
if r := recover(); r != nil { if r := recover(); r != nil {
if errVal, ok := r.(error); ok { if errVal, ok := r.(error); ok {
err = errVal 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() ast.Finish()
@ -123,8 +122,8 @@ func (ast *ast) Eval(ctx kern.ExprContext) (result any, err error) {
if ast.root != nil { if ast.root != nil {
// initDefaultVars(ctx) // initDefaultVars(ctx)
if ast.forest != nil { if ast.forest != nil {
for _, root := range ast.forest { for _, tree := range ast.forest {
if result, err = root.Compute(ctx); err == nil { if result, err = tree.Compute(ctx); err == nil {
ctx.UnsafeSetVar(kern.ControlLastResult, result) ctx.UnsafeSetVar(kern.ControlLastResult, result)
} else { } else {
//err = fmt.Errorf("error in expression nr %d: %v", i+1, err) //err = fmt.Errorf("error in expression nr %d: %v", i+1, err)

View File

@ -386,11 +386,10 @@ func (parser *parser) Parse(scanner *scanner, termSymbols ...Symbol) (tree *ast,
if r := recover(); r != nil { if r := recover(); r != nil {
if errVal, ok := r.(error); ok { if errVal, ok := r.(error); ok {
err = errVal 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) termSymbols = append(termSymbols, SymEos)
return parser.parseGeneral(scanner, allowMultiExpr, termSymbols...) return parser.parseGeneral(scanner, allowMultiExpr, termSymbols...)