fixed closeing with strings
This commit is contained in:
21
bf.kp
21
bf.kp
@@ -111,14 +111,27 @@
|
|||||||
|
|
||||||
|
|
||||||
;(def! inner (fn* [x] (do (throw (+ x 1)) (+ x 2))))
|
;(def! inner (fn* [x] (do (throw (+ x 1)) (+ x 2))))
|
||||||
(def! inner (fn* [x] (do (println 7) (+ x 2))))
|
;(def! inner (fn* [x] (do (println 7) (+ x 2))))
|
||||||
;(def! main (fn* [] (do (println (try*
|
;(def! main (fn* [] (do (println (try*
|
||||||
; (inner 7)
|
; (inner 7)
|
||||||
; (catch* exp (+ exp 10))))
|
; (catch* exp (+ exp 10))))
|
||||||
; 7)))
|
; 7)))
|
||||||
(def! main (fn* [] (do (println (try*
|
;(def! main (fn* [] (do (println (try*
|
||||||
(inner 7)))
|
; (inner 7)))
|
||||||
7)))
|
; 7)))
|
||||||
|
|
||||||
|
|
||||||
|
(def! main (fn* [] (let* ( a 7
|
||||||
|
b "hello" )
|
||||||
|
(do
|
||||||
|
(try*
|
||||||
|
((fn* [] (do (println b) (println "world") a)))
|
||||||
|
)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1683,9 +1683,6 @@ fun find_closed_vars(defined: set<str>, env: *Env, ast: MalValue): set<str> {
|
|||||||
}
|
}
|
||||||
println("end list")
|
println("end list")
|
||||||
}
|
}
|
||||||
MalValue::List(l) {
|
|
||||||
error("Can't get clsoure_vars for " + pr_str(ast, true))
|
|
||||||
}
|
|
||||||
MalValue::Vector(l) {
|
MalValue::Vector(l) {
|
||||||
var to_ret = set<str>()
|
var to_ret = set<str>()
|
||||||
for (var i = 0; i < l.size; i++;) {
|
for (var i = 0; i < l.size; i++;) {
|
||||||
@@ -1718,6 +1715,9 @@ fun find_closed_vars(defined: set<str>, env: *Env, ast: MalValue): set<str> {
|
|||||||
MalValue::False() {
|
MalValue::False() {
|
||||||
return set<str>()
|
return set<str>()
|
||||||
}
|
}
|
||||||
|
MalValue::String(s) {
|
||||||
|
return set<str>()
|
||||||
|
}
|
||||||
MalValue::Function(f) {
|
MalValue::Function(f) {
|
||||||
var new_env = new<Env>()->construct(env)
|
var new_env = new<Env>()->construct(env)
|
||||||
for (var i = 0; i < f.parameters.size; i++;) {
|
for (var i = 0; i < f.parameters.size; i++;) {
|
||||||
@@ -1730,7 +1730,7 @@ fun find_closed_vars(defined: set<str>, env: *Env, ast: MalValue): set<str> {
|
|||||||
return to_ret
|
return to_ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
error("Can't get clsoure_vars for " + pr_str(ast, true))
|
error("Can't get closure_vars for " + pr_str(ast, true))
|
||||||
}
|
}
|
||||||
fun compile_value(top_decs: *str, top_defs: *str, main_init: *str, defs: *str, env: *Env, ast: MalValue, quoted: bool): str {
|
fun compile_value(top_decs: *str, top_defs: *str, main_init: *str, defs: *str, env: *Env, ast: MalValue, quoted: bool): str {
|
||||||
match (ast) {
|
match (ast) {
|
||||||
|
|||||||
Reference in New Issue
Block a user