diff options
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 5 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Util.java | 24 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 2c720c5f..e144855b 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -950,9 +950,10 @@ static public int intCast(float x){ } static public int intCast(long x){ - if(x < Integer.MIN_VALUE || x > Integer.MAX_VALUE) + int i = (int) x; + if(i != x) throw new IllegalArgumentException("Value out of range for int: " + x); - return (int) x; + return i; } static public int intCast(double x){ diff --git a/src/jvm/clojure/lang/Util.java b/src/jvm/clojure/lang/Util.java index 47366026..5b5ee4ec 100644 --- a/src/jvm/clojure/lang/Util.java +++ b/src/jvm/clojure/lang/Util.java @@ -33,6 +33,30 @@ static public boolean equiv(Object k1, Object k2){ return false; } +static public boolean equiv(long k1, long k2){ + return k1 == k2; +} + +static public boolean equiv(Object k1, long k2){ + return equiv(k1, (Object)k2); +} + +static public boolean equiv(long k1, Object k2){ + return equiv((Object)k1, k2); +} + +static public boolean equiv(double k1, double k2){ + return k1 == k2; +} + +static public boolean equiv(Object k1, double k2){ + return equiv(k1, (Object)k2); +} + +static public boolean equiv(double k1, Object k2){ + return equiv((Object)k1, k2); +} + static public boolean pcequiv(Object k1, Object k2){ if(k1 instanceof IPersistentCollection) return ((IPersistentCollection)k1).equiv(k2); |