summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/RT.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index c467d31e..d19319e0 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -1000,7 +1000,12 @@ static public long longCast(Object x){
else
throw new IllegalArgumentException("Value out of range for long: " + x);
}
- return ((Number) x).longValue();
+ else if (x instanceof Byte || x instanceof Short)
+ return ((Number) x).longValue();
+ else if (x instanceof Ratio)
+ return longCast(((Ratio)x).bigIntegerValue());
+ else
+ return longCast(((Number)x).doubleValue());
}
static public long longCast(int x){