Fixes error in how env.Find() propagated errors from parent envs
This commit is contained in:
parent
95b05e122f
commit
8b2ecc73e9
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue