From 08de30a36ff6599e583d22c4305bfee9878f92ea Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Mon, 15 Dec 2014 22:54:35 -0400 Subject: Added ints and floats. --- src/lang/compiler.clj | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/lang/compiler.clj') diff --git a/src/lang/compiler.clj b/src/lang/compiler.clj index 83ce18ab1..e7d1ed582 100644 --- a/src/lang/compiler.clj +++ b/src/lang/compiler.clj @@ -70,8 +70,17 @@ ;; [Utils/Compilers] (defcompiler ^:private compile-literal [::&analyser/literal ?literal] - (cond (string? ?literal) - (.visitLdcInsn *writer* ?literal) + (cond (instance? java.lang.Integer ?literal) + (doto *writer* + (.visitTypeInsn Opcodes/NEW (->class "java.lang.Integer")) + (.visitInsn Opcodes/DUP)(.visitLdcInsn ?literal) + (.visitMethodInsn Opcodes/INVOKESPECIAL (->class "java.lang.Integer") "" "(I)V")) + + (instance? java.lang.Float ?literal) + (doto *writer* + (.visitTypeInsn Opcodes/NEW (->class "java.lang.Float")) + (.visitInsn Opcodes/DUP)(.visitLdcInsn ?literal) + (.visitMethodInsn Opcodes/INVOKESPECIAL (->class "java.lang.Float") "" "(F)V")) (instance? java.lang.Boolean ?literal) (if ?literal @@ -80,6 +89,9 @@ ;; (.visitLdcInsn *writer* (int 0)) (.visitFieldInsn *writer* Opcodes/GETSTATIC (->class "java.lang.Boolean") "FALSE" (->type-signature "java.lang.Boolean"))) + (string? ?literal) + (.visitLdcInsn *writer* ?literal) + :else (assert false (str "[Unknown literal type] " ?literal " : " (class ?literal))))) -- cgit v1.2.3