Fixes version bump conflict
This commit is contained in:
commit
a0bf420848
|
@ -63,7 +63,7 @@ func eval(exp expression, en *env) (value expression) {
|
|||
value = exception("Invalid 'quote' syntax - too few arguments")
|
||||
break
|
||||
}
|
||||
value = e[1]
|
||||
value = stringUnescapeEval(e[1])
|
||||
case "if":
|
||||
if len(e) < 3 {
|
||||
value = exception("Invalid 'if' syntax - too few arguments")
|
||||
|
@ -278,7 +278,7 @@ func eval(exp expression, en *env) (value expression) {
|
|||
}
|
||||
b := []expression{symbol("begin")}
|
||||
b = append(b, e[2:]...)
|
||||
value = proc{e[1], b, en}
|
||||
value = proc{e[1], stringUnescapeEval(b), en}
|
||||
case "macro":
|
||||
if len(e) < 3 {
|
||||
value = exception("'macro' expects at least three arguments")
|
||||
|
@ -668,3 +668,24 @@ func CoEval(wg *sync.WaitGroup, ex expression, e *env) {
|
|||
defer wg.Done()
|
||||
eval(ex, e)
|
||||
}
|
||||
|
||||
// Because lambda and quote expressions do not have their
|
||||
// content evaluated at creation strings were not getting
|
||||
// unescaped. As such, they were not usable in the same way
|
||||
// as strings used elsewhere. This recursively unescapes all
|
||||
// of the strings as need be so that string behavior is
|
||||
// consistent accross the system.
|
||||
func stringUnescapeEval(exp expression) expression {
|
||||
switch e := exp.(type) {
|
||||
case string:
|
||||
return unescapeString(e)
|
||||
case []expression:
|
||||
values := make([]expression, len(e))
|
||||
for i, x := range e {
|
||||
values[i] = stringUnescapeEval(x)
|
||||
}
|
||||
return values
|
||||
default:
|
||||
return e
|
||||
}
|
||||
}
|
||||
|
|
2
main.go
2
main.go
|
@ -18,7 +18,7 @@ import (
|
|||
ln "github.com/peterh/liner"
|
||||
)
|
||||
|
||||
const version = "1.1.3"
|
||||
const version = "1.1.4"
|
||||
|
||||
const globalLibPath = "/usr/local/lib/slope/modules/"
|
||||
|
||||
|
|
Loading…
Reference in New Issue