aboutsummaryrefslogtreecommitdiff
path: root/luxc/src/lux/compiler/js/rt.clj
diff options
context:
space:
mode:
authorEduardo Julian2017-02-26 20:17:23 -0400
committerEduardo Julian2017-02-26 20:17:23 -0400
commit2f77d20394274e89da509716b4cf78fba9724e46 (patch)
tree323f1da5f3c7702c2498a35319c2cd99796b6669 /luxc/src/lux/compiler/js/rt.clj
parent79c10caf4c7e370dc53c4c60c57cc16ccec48773 (diff)
- Added try-catch procedure to JS backend.
Diffstat (limited to '')
-rw-r--r--luxc/src/lux/compiler/js/rt.clj14
1 files changed, 13 insertions, 1 deletions
diff --git a/luxc/src/lux/compiler/js/rt.clj b/luxc/src/lux/compiler/js/rt.clj
index 2416445e5..e6a50b373 100644
--- a/luxc/src/lux/compiler/js/rt.clj
+++ b/luxc/src/lux/compiler/js/rt.clj
@@ -1375,11 +1375,23 @@
"})")
}))
+(def ^:private lux-methods
+ {"runTry" (str "(function runTry(op) {"
+ (str "try {"
+ (str "return [1,'',op(null)];")
+ "}"
+ "catch(ex) {"
+ (str "return [0,null,ex.toString()];")
+ "}")
+ "})")
+ })
+
(def LuxRT "LuxRT")
(def compile-LuxRT
(|do [_ (&&/run-js! "var console = { log: print };")
- :let [rt-object (str "{" (->> (merge adt-methods
+ :let [rt-object (str "{" (->> (merge lux-methods
+ adt-methods
i64-methods
n64-methods
text-methods