diff options
| author | Joel Martin <github@martintribe.org> | 2015-02-28 15:58:35 -0600 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2015-02-28 15:58:35 -0600 |
| commit | 3e0b36dcee99ddfd7ea0e04a382c1ad3858fc45f (patch) | |
| tree | 523465cf281c01c8930e3166e4050cd201335411 /lua/step9_try.lua | |
| parent | 7907cd904a12c542529b27b0517a609e9cc4bb08 (diff) | |
| download | mal-3e0b36dcee99ddfd7ea0e04a382c1ad3858fc45f.tar.gz mal-3e0b36dcee99ddfd7ea0e04a382c1ad3858fc45f.zip | |
Lua: fix with new runtest.py
Diffstat (limited to 'lua/step9_try.lua')
| -rwxr-xr-x | lua/step9_try.lua | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/lua/step9_try.lua b/lua/step9_try.lua index f3d8cce..315d698 100755 --- a/lua/step9_try.lua +++ b/lua/step9_try.lua @@ -174,23 +174,30 @@ rep("(def! load-file (fn* (f) (eval (read-string (str \"(do \" (slurp f) \")\")) rep("(defmacro! cond (fn* (& xs) (if (> (count xs) 0) (list 'if (first xs) (if (> (count xs) 1) (nth xs 1) (throw \"odd number of forms to cond\")) (cons 'cond (rest (rest xs)))))))") rep("(defmacro! or (fn* (& xs) (if (empty? xs) nil (if (= 1 (count xs)) (first xs) `(let* (or_FIXME ~(first xs)) (if or_FIXME or_FIXME (or ~@(rest xs))))))))") +function print_exception(exc) + if exc then + if types._malexception_Q(exc) then + exc = printer._pr_str(exc.val, true) + end + print("Error: " .. exc) + print(debug.traceback()) + end +end + +if #arg > 0 and arg[1] == "--raw" then + readline.raw = true + table.remove(arg,1) +end + if #arg > 0 then - rep("(load-file \""..arg[1].."\")") + xpcall(function() rep("(load-file \""..arg[1].."\")") end, + print_exception) os.exit(0) end while true do line = readline.readline("user> ") if not line then break end - xpcall(function() - print(rep(line)) - end, function(exc) - if exc then - if types._malexception_Q(exc) then - exc = printer._pr_str(exc.val, true) - end - print("Error: " .. exc) - print(debug.traceback()) - end - end) + xpcall(function() print(rep(line)) end, + print_exception) end |
