diff options
author | Chouser <chouser@n01se.net> | 2008-09-16 03:08:49 +0000 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2008-09-16 03:08:49 +0000 |
commit | 0857ce7475d4c16ee1f2cd550e0b281a1a51bd8e (patch) | |
tree | becf180d8219ef42c468a7a0091515bd46ed18e7 | |
parent | 384245bfd53480891ca251bbb026560bac984586 (diff) |
ClojureScript: fix locals names and removed *check-arity* (which was kinda borken anyway)
-rw-r--r-- | clojurescript/clj.js | 7 | ||||
-rw-r--r-- | clojurescript/tojs.clj | 26 |
2 files changed, 17 insertions, 16 deletions
diff --git a/clojurescript/clj.js b/clojurescript/clj.js index deaa9523..988173b6 100644 --- a/clojurescript/clj.js +++ b/clojurescript/clj.js @@ -52,7 +52,12 @@ clojure = { } } }, - lang: {} + lang: { + Numbers: { + isPos: function(x) { return x > 0; }, + dec: function(x) { return x - 1; } + } + } }; clojure.lang.ArraySeq = function( _meta, a, i ) { diff --git a/clojurescript/tojs.clj b/clojurescript/tojs.clj index 64881f95..982ddcc2 100644 --- a/clojurescript/tojs.clj +++ b/clojurescript/tojs.clj @@ -12,7 +12,6 @@ (lvl v) (str sb))) -(def *arity-check* false) (def *has-recur*) (defmulti tojs (fn [e ctx] (class e))) @@ -25,8 +24,8 @@ (str (tojs (.var e) ctx) "=" (tojs (.init e) ctx))) (defn fnmethod [fm maxm ctx] - (let [lm (into {} (map (fn [[lb lb] i] [lb (str (.name lb) "_" i)]) - (.locals fm) (iterate inc 0))) + (let [lm (into {} (for [[lb lb] (.locals fm)] + [lb (str (.name lb) "_" (.idx lb))])) thisfn (some #(when (= (.name %) (:fnname ctx)) %) (keys lm)) [body has-recur] (binding [*has-recur* false] [(tojs (.body fm) @@ -62,19 +61,16 @@ manym (< 1 (count (.methods e))) newctx (assoc ctx :fnname (.thisName e))] (vstr ["(function(" - (vec (interpose "," (map #(vector (.name %) "_" (.idx %)) - (.reqParms maxm)))) + (vec (interpose "," (for [lb (.reqParms maxm)] + [(.name lb) "_" (.idx lb)]))) "){\n" (vec (for [fm (.methods e) :when (not= fm (.variadicMethod e))] - [(when manym - ["if(arguments.length==" (count (.reqParms fm)) "){\n"]) - (fnmethod fm maxm newctx) - (when manym "}\n")])) - (if (.variadicMethod e) - [(fnmethod (.variadicMethod e) maxm newctx) "\n"] - (when *arity-check* - ["throw \"Wrong number of args passed to: " - (.thisName e) "\";\n"])) + (if manym + ["if(arguments.length==" (count (.reqParms fm)) "){\n" + (fnmethod fm maxm newctx) "}\n"] + (fnmethod fm maxm newctx)))) + (when (.variadicMethod e) + [(fnmethod (.variadicMethod e) maxm newctx) "\n"]) "})"]))) (defmethod tojs clojure.lang.Compiler$BodyExpr [e ctx] @@ -289,4 +285,4 @@ ;(simple-tests) ;(testboot) -(filetojs "t01.cljs") +(filetojs (first *command-line-args*)) |