diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2008-03-20 14:56:41 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2008-03-20 14:56:41 +0000 |
commit | 75b4429e15e88c1b94407b8f1824861bf3125d14 (patch) | |
tree | 7498164d3e3b8c6631dcc354c5a799b3ed3360c9 | |
parent | 6854959bc237babd4012c6466cf9f89044cbb5c3 (diff) | |
download | scala-75b4429e15e88c1b94407b8f1824861bf3125d14.tar.gz scala-75b4429e15e88c1b94407b8f1824861bf3125d14.tar.bz2 scala-75b4429e15e88c1b94407b8f1824861bf3125d14.zip |
Fixed issues #584 and #602.
-rw-r--r-- | src/cldc-library/scala/runtime/BoxesRunTime.java | 26 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/CleanUp.scala | 2 | ||||
-rw-r--r-- | src/library/scala/runtime/BoxesRunTime.java | 34 |
3 files changed, 45 insertions, 17 deletions
diff --git a/src/cldc-library/scala/runtime/BoxesRunTime.java b/src/cldc-library/scala/runtime/BoxesRunTime.java index 6d50c05627..33c418381a 100644 --- a/src/cldc-library/scala/runtime/BoxesRunTime.java +++ b/src/cldc-library/scala/runtime/BoxesRunTime.java @@ -127,27 +127,39 @@ public class BoxesRunTime { /* UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING */ public static boolean unboxToBoolean(Object b) { - return b == null ? false : ((Boolean)b).booleanValue(); + if (b == null) + throw new ClassCastException("null is no Boolean value"); + return ((Boolean)b).booleanValue(); } public static char unboxToChar(Object c) { - return c == null ? 0 : ((Character)c).charValue(); + if (c == null) + throw new ClassCastException("null is no Char value"); + return ((Character)c).charValue(); } public static byte unboxToByte(Object b) { - return b == null ? 0 : ((Byte)b).byteValue(); + if (b == null) + throw new ClassCastException("null is no Byte value"); + return ((Byte)b).byteValue(); } public static short unboxToShort(Object s) { - return s == null ? 0 : ((Short)s).shortValue(); + if (s == null) + throw new ClassCastException("null is no Short value"); + return ((Short)s).shortValue(); } public static int unboxToInt(Object i) { - return i == null ? 0 : ((Integer)i).intValue(); + if (i == null) + throw new ClassCastException("null is no Int value"); + return ((Integer)i).intValue(); } public static long unboxToLong(Object l) { - return l == null ? 0 : ((Long)l).longValue(); + if (l == null) + throw new ClassCastException("null is no Long value"); + return ((Long)l).longValue(); } /* COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON */ @@ -192,7 +204,7 @@ public class BoxesRunTime { } /** arg1 - arg2 */ - public static Object substract(Object arg1, Object arg2) throws Error { + public static Object subtract(Object arg1, Object arg2) throws Error { throw new Error(); } diff --git a/src/compiler/scala/tools/nsc/transform/CleanUp.scala b/src/compiler/scala/tools/nsc/transform/CleanUp.scala index 526662013d..3612a4d62e 100644 --- a/src/compiler/scala/tools/nsc/transform/CleanUp.scala +++ b/src/compiler/scala/tools/nsc/transform/CleanUp.scala @@ -257,7 +257,7 @@ abstract class CleanUp extends Transform { case nme.ADD => (definitions.getMember(definitions.BoxesRunTimeClass, newTermName("add")), testForNumber) case nme.SUB => - (definitions.getMember(definitions.BoxesRunTimeClass, newTermName("substract")), testForNumber) + (definitions.getMember(definitions.BoxesRunTimeClass, newTermName("subtract")), testForNumber) case nme.MUL => (definitions.getMember(definitions.BoxesRunTimeClass, newTermName("multiply")), testForNumber) case nme.DIV => diff --git a/src/library/scala/runtime/BoxesRunTime.java b/src/library/scala/runtime/BoxesRunTime.java index 553a1a08d3..932c530901 100644 --- a/src/library/scala/runtime/BoxesRunTime.java +++ b/src/library/scala/runtime/BoxesRunTime.java @@ -135,35 +135,51 @@ public class BoxesRunTime { /* UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING */ public static boolean unboxToBoolean(Object b) { - return b == null ? false : ((Boolean)b).booleanValue(); + if (b == null) + throw new ClassCastException("null is no Boolean value"); + return ((Boolean)b).booleanValue(); } public static char unboxToChar(Object c) { - return c == null ? 0 : ((Character)c).charValue(); + if (c == null) + throw new ClassCastException("null is no Char value"); + return ((Character)c).charValue(); } public static byte unboxToByte(Object b) { - return b == null ? 0 : ((Byte)b).byteValue(); + if (b == null) + throw new ClassCastException("null is no Byte value"); + return ((Byte)b).byteValue(); } public static short unboxToShort(Object s) { - return s == null ? 0 : ((Short)s).shortValue(); + if (s == null) + throw new ClassCastException("null is no Short value"); + return ((Short)s).shortValue(); } public static int unboxToInt(Object i) { - return i == null ? 0 : ((Integer)i).intValue(); + if (i == null) + throw new ClassCastException("null is no Int value"); + return ((Integer)i).intValue(); } public static long unboxToLong(Object l) { - return l == null ? 0 : ((Long)l).longValue(); + if (l == null) + throw new ClassCastException("null is no Long value"); + return ((Long)l).longValue(); } public static float unboxToFloat(Object f) { - return f == null ? 0.0f : ((Float)f).floatValue(); + if (f == null) + throw new ClassCastException("null is no Float value"); + return ((Float)f).floatValue(); } public static double unboxToDouble(Object d) { - return d == null ? 0.0d : ((Double)d).doubleValue(); + if (d == null) + throw new ClassCastException("null is no Double value"); + return ((Double)d).doubleValue(); } /* COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON */ @@ -240,7 +256,7 @@ public class BoxesRunTime { } /** arg1 - arg2 */ - public static Object substract(Object arg1, Object arg2) throws NoSuchMethodException { + public static Object subtract(Object arg1, Object arg2) throws NoSuchMethodException { int code1 = typeCode(arg1); int code2 = typeCode(arg2); int maxcode = (code1 < code2) ? code2 : code1; |