Fixes error in how env.Find() propagated errors from parent envs

This commit is contained in:
sloum 2022-07-03 14:45:02 -07:00
parent 95b05e122f
commit 8b2ecc73e9
2 changed files with 5 additions and 8 deletions

View File

@ -21,8 +21,8 @@ func (e *env) Find(s symbol) (*env, error) {
return nil, fmt.Errorf("Symbol %q is not defined", s)
}
} else {
en, _ := e.outer.Find(s)
return en, nil
en, err := e.outer.Find(s)
return en, err
}
}

View File

@ -499,19 +499,16 @@ func eval(exp expression, en *env) (value expression) {
}
value = true
var err error
for i := range e {
if i == 0 {
continue
}
for i := range e[1:] {
doPanic := panicOnException
if doPanic {
panicOnException = false
}
_, ok := e[i].([]expression)
if ok {
_, err = en.Find(symbol(String(eval(e[i], en), false)))
_, err = en.Find(symbol(String(eval(e[i+1], en), false)))
} else {
_, err = en.Find(symbol(String(e[i], false)))
_, err = en.Find(symbol(String(e[i+1], false)))
}
if doPanic {
panicOnException = true