aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEduardo Julian2016-10-03 21:09:13 -0400
committerEduardo Julian2016-10-03 21:09:13 -0400
commit63ce105dd1c1a0af090582900dddd4bd0ec7824b (patch)
tree29a77be84ca8d1b8e26ddcb0c78907404f7b0075
parente3402159ae22a13a0e9bea8d125fa0f6507e5535 (diff)
- Fixed a bug wherein compiler code was relying on analyzer tags, instead of optimizer tags.
Diffstat (limited to '')
-rw-r--r--src/lux/compiler/host.clj2
-rw-r--r--src/lux/compiler/lambda.clj2
-rw-r--r--src/lux/compiler/lux.clj4
-rw-r--r--src/lux/compiler/type.clj21
4 files changed, 15 insertions, 14 deletions
diff --git a/src/lux/compiler/host.clj b/src/lux/compiler/host.clj
index c59a616d8..77eeb8559 100644
--- a/src/lux/compiler/host.clj
+++ b/src/lux/compiler/host.clj
@@ -439,7 +439,7 @@
(.visitFieldInsn Opcodes/PUTFIELD class-name captured-name clo-field-sig))
(->> (let [captured-name (str &&/closure-prefix ?captured-id)])
(|case ?name+?captured
- [?name [_ (&a/$captured _ ?captured-id ?source)]])
+ [?name [_ (&o/$captured _ ?captured-id ?source)]])
(doseq [?name+?captured (&/->seq env)])))
(.visitInsn Opcodes/RETURN)
(.visitMaxs 0 0)
diff --git a/src/lux/compiler/lambda.clj b/src/lux/compiler/lambda.clj
index 32650e262..084c38b80 100644
--- a/src/lux/compiler/lambda.clj
+++ b/src/lux/compiler/lambda.clj
@@ -132,7 +132,7 @@
(.visitInsn Opcodes/DUP))]
_ (&/map% (fn [?name+?captured]
(|case ?name+?captured
- [?name [_ (&a/$captured _ _ ?source)]]
+ [?name [_ (&o/$captured _ _ ?source)]]
(compile nil ?source)))
closed-over)
:let [_ (when (> arity 1)
diff --git a/src/lux/compiler/lux.clj b/src/lux/compiler/lux.clj
index 3c19d70e5..7bb97260e 100644
--- a/src/lux/compiler/lux.clj
+++ b/src/lux/compiler/lux.clj
@@ -222,13 +222,13 @@
(defn ^:private compile-def-type [compile ?body]
(|do [:let [?def-type (|case ?body
- [[?def-type ?def-cursor] (&a/$ann ?def-value ?type-expr ?def-value-type)]
+ [[?def-type ?def-cursor] (&o/$ann ?def-value ?type-expr ?def-value-type)]
?type-expr
[[?def-type ?def-cursor] ?def-value]
(if (&type/type= &type/Type ?def-type)
(&/T [(&/T [?def-type ?def-cursor])
- (&a/$tuple (&/|list))])
+ (&o/$tuple (&/|list))])
(&&type/type->analysis ?def-type)))]]
(compile nil ?def-type)))
diff --git a/src/lux/compiler/type.clj b/src/lux/compiler/type.clj
index c7dbdb557..f80e32a57 100644
--- a/src/lux/compiler/type.clj
+++ b/src/lux/compiler/type.clj
@@ -8,7 +8,8 @@
clojure.core.match
clojure.core.match.array
(lux [base :as & :refer [|do return* return fail fail* |let |case]]
- [type :as &type])
+ [type :as &type]
+ [optimizer :as &o])
[lux.analyser.base :as &a]))
;; [Utils]
@@ -16,12 +17,12 @@
"(-> clojure.lang.Var Analysis Analysis)"
(let [tag-meta (meta tag)]
(&a/|meta &/$VoidT &/empty-cursor
- (&a/$variant (::&/idx tag-meta) (::&/is-last? tag-meta) body))))
+ (&o/$variant (::&/idx tag-meta) (::&/is-last? tag-meta) body))))
(defn ^:private tuple$ [members]
"(-> (List Analysis) Analysis)"
(&a/|meta &/$VoidT &/empty-cursor
- (&a/$tuple members)))
+ (&o/$tuple members)))
(do-template [<name> <tag> <doc>]
(defn <name> [value]
@@ -29,13 +30,13 @@
(&a/|meta &/$VoidT &/empty-cursor
(<tag> value)))
- ^:private bool$ &a/$bool "(-> Bool Analysis)"
- ^:private nat$ &a/$nat "(-> Nat Analysis)"
- ^:private int$ &a/$int "(-> Int Analysis)"
- ^:private frac$ &a/$frac "(-> Nat Analysis)"
- ^:private real$ &a/$real "(-> Real Analysis)"
- ^:private char$ &a/$char "(-> Char Analysis)"
- ^:private text$ &a/$text "(-> Text Analysis)"
+ ^:private bool$ &o/$bool "(-> Bool Analysis)"
+ ^:private nat$ &o/$nat "(-> Nat Analysis)"
+ ^:private int$ &o/$int "(-> Int Analysis)"
+ ^:private frac$ &o/$frac "(-> Nat Analysis)"
+ ^:private real$ &o/$real "(-> Real Analysis)"
+ ^:private char$ &o/$char "(-> Char Analysis)"
+ ^:private text$ &o/$text "(-> Text Analysis)"
)
(defn ^:private ident$ [value]