aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lux.clj2
-rw-r--r--src/lux/analyser.clj83
-rw-r--r--src/lux/base.clj2
-rw-r--r--src/lux/type/host.clj2
4 files changed, 47 insertions, 42 deletions
diff --git a/src/lux.clj b/src/lux.clj
index 8cd2c4b80..4b1c15ef7 100644
--- a/src/lux.clj
+++ b/src/lux.clj
@@ -24,7 +24,7 @@
_
(println "Can't understand command."))
- ;; (System/exit 0)
+ (System/exit 0)
)
(comment
diff --git a/src/lux/analyser.clj b/src/lux/analyser.clj
index 4ead47916..70a4a6ee9 100644
--- a/src/lux/analyser.clj
+++ b/src/lux/analyser.clj
@@ -212,6 +212,48 @@
(defn ^:private aba6 [analyse eval! compile-module compile-token exo-type token]
(|case token
+ ;; Bitwise operators
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_iand")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-iand analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ior")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-ior analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ixor")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-ixor analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ishl")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-ishl analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ishr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-ishr analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_iushr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-iushr analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_land")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-land analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lor")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-lor analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lxor")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-lxor analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lshl")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-lshl analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lshr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-lshr analyse exo-type ?x ?y)
+
+ (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lushr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
+ (&&host/analyse-jvm-lushr analyse exo-type ?x ?y)
+
+ _
+ (aba7 analyse eval! compile-module compile-token exo-type token)))
+
+(defn ^:private aba5_5 [analyse eval! compile-module compile-token exo-type token]
+ (|case token
;; Primitive conversions
(&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_d2f")] (&/$Cons ?value (&/$Nil))))
(&&host/analyse-jvm-d2f analyse exo-type ?value)
@@ -258,45 +300,8 @@
(&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_l2i")] (&/$Cons ?value (&/$Nil))))
(&&host/analyse-jvm-l2i analyse exo-type ?value)
- ;; Bitwise operators
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_iand")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-iand analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ior")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-ior analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ixor")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-ixor analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ishl")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-ishl analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_ishr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-ishr analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_iushr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-iushr analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_land")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-land analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lor")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-lor analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lxor")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-lxor analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lshl")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-lshl analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lshr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-lshr analyse exo-type ?x ?y)
-
- (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_lushr")] (&/$Cons ?x (&/$Cons ?y (&/$Nil)))))
- (&&host/analyse-jvm-lushr analyse exo-type ?x ?y)
-
_
- (aba7 analyse eval! compile-module compile-token exo-type token)))
+ (aba6 analyse eval! compile-module compile-token exo-type token)))
(defn ^:private aba5 [analyse eval! compile-module compile-token exo-type token]
(|case token
@@ -411,7 +416,7 @@
(&&host/analyse-jvm-monitorexit analyse exo-type ?monitor)
_
- (aba6 analyse eval! compile-module compile-token exo-type token)))
+ (aba5_5 analyse eval! compile-module compile-token exo-type token)))
(defn ^:private aba4 [analyse eval! compile-module compile-token exo-type token]
(|case token
diff --git a/src/lux/base.clj b/src/lux/base.clj
index 7357bd483..e9b8896bf 100644
--- a/src/lux/base.clj
+++ b/src/lux/base.clj
@@ -376,7 +376,7 @@
init
($Cons x xs*)
- (fold f (f init x) xs*)))
+ (recur f (f init x) xs*)))
(defn fold% [f init xs]
(|case xs
diff --git a/src/lux/type/host.clj b/src/lux/type/host.clj
index 989c0d665..d4627b273 100644
--- a/src/lux/type/host.clj
+++ b/src/lux/type/host.clj
@@ -155,7 +155,7 @@
(let [lineage (trace-lineage sub-class+ super-class+)]
(|do [[^Class sub-class* sub-params*] (raise existential lineage sub-class+ sub-params)]
(return (&/V &/$DataT (&/T (.getName sub-class*) sub-params*)))))
- (fail (str "[Type Error] Classes don't have a subtyping relationship: " sub-class " </=" super-class)))))
+ (fail (str "[Type Error] Classes don't have a subtyping relationship: " sub-class " </= " super-class)))))
(defn as-obj [class]
(case class