summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-11-08 18:14:04 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-11-08 18:14:04 +0000
commitbf83b15cadf4bea4bc025ef84042f3bcbb5d3621 (patch)
tree2faad060fd7003f54045a4ef4cf3158fa5a65f55
parent05b59f2c7d2e653b1bc5d132703aa60e062a2af4 (diff)
downloadscala-bf83b15cadf4bea4bc025ef84042f3bcbb5d3621.tar.gz
scala-bf83b15cadf4bea4bc025ef84042f3bcbb5d3621.tar.bz2
scala-bf83b15cadf4bea4bc025ef84042f3bcbb5d3621.zip
Fixed ticket #193 by issuing a compile-time error.
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala3
-rw-r--r--test/files/neg/multi-array.check4
-rw-r--r--test/files/neg/multi-array.scala7
3 files changed, 14 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
index f5b4f0dc58..fa5beea645 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -667,6 +667,9 @@ abstract class GenICode extends SubComponent {
ctx1 = genLoadArguments(args, ctor.info.paramTypes, ctx)
val dims = arr.dimensions
var elemKind = arr.elementKind
+ if (args.length > dims)
+ unit.error(tree.pos, "too many arguments for array constructor: found " + args.length +
+ " but array has only " + dims + " dimension(s)")
if (args.length != dims)
for (i <- args.length until dims) elemKind = ARRAY(elemKind)
ctx1.bb.emit(CREATE_ARRAY(elemKind, args.length), tree.pos)
diff --git a/test/files/neg/multi-array.check b/test/files/neg/multi-array.check
new file mode 100644
index 0000000000..94d0613735
--- /dev/null
+++ b/test/files/neg/multi-array.check
@@ -0,0 +1,4 @@
+multi-array.scala:6: error: too many arguments for array constructor: found 2 but array has only 1 dimension(s)
+ val a: Array[Int] = new Array(10, 10)
+ ^
+one error found
diff --git a/test/files/neg/multi-array.scala b/test/files/neg/multi-array.scala
new file mode 100644
index 0000000000..993a1c0865
--- /dev/null
+++ b/test/files/neg/multi-array.scala
@@ -0,0 +1,7 @@
+/** Check that a multi-dimensional array can't be created
+ * when the wrong number of arguments w.r.t. to the array's
+ * type is given.
+ */
+class Foo {
+ val a: Array[Int] = new Array(10, 10)
+}