diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 7 |
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){ |