From c768f931ae89b9296c0d740454f5ea56c3a1cda2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 11 Jan 2015 01:31:47 +0100 Subject: [PATCH] Being a bit more open to underlying types other architectures may provide as arguments. Should fix #797. --- .../li/cil/oc/server/machine/ArgumentsImpl.scala | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala b/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala index 190dbddb0..53a26f27d 100644 --- a/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala +++ b/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala @@ -47,7 +47,7 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { def checkDouble(index: Int) = { checkIndex(index, "number") args(index) match { - case value: java.lang.Double => value + case value: java.lang.Number => value.doubleValue case value => throw typeError(index, value, "number") } } @@ -60,7 +60,7 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { def checkInteger(index: Int) = { checkIndex(index, "number") args(index) match { - case value: java.lang.Double => value.intValue + case value: java.lang.Number => value.intValue case value => throw typeError(index, value, "number") } } @@ -118,7 +118,7 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { map.get("name") match { case name: String => val damage = map.get("damage") match { - case number: Number => number.intValue() + case number: java.lang.Number => number.intValue case _ => 0 } val tag = map.get("tag") match { @@ -144,13 +144,17 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { def isDouble(index: Int) = index >= 0 && index < count && (args(index) match { + case value: java.lang.Float => true case value: java.lang.Double => true case _ => false }) def isInteger(index: Int) = index >= 0 && index < count && (args(index) match { + case value: java.lang.Byte => true + case value: java.lang.Short => true case value: java.lang.Integer => true + case value: java.lang.Long => true case value: java.lang.Double => true case _ => false }) @@ -206,7 +210,7 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { private def typeName(value: AnyRef): String = value match { case null | Unit | None => "nil" case _: java.lang.Boolean => "boolean" - case _: java.lang.Double => "double" + case _: java.lang.Number => "double" case _: java.lang.String => "string" case _: Array[Byte] => "string" case value: java.util.Map[_, _] => "table"