diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/icode/GenICode.scala | 3 | ||||
-rw-r--r-- | test/files/neg/multi-array.check | 4 | ||||
-rw-r--r-- | test/files/neg/multi-array.scala | 7 |
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) +} |