aboutsummaryrefslogtreecommitdiff
path: root/test/test/DottyBytecodeTests.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-05-17 22:06:59 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-05-17 22:06:59 +0200
commit5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841 (patch)
treeb298e31c125bd7c2685cb7af8cb9b13c51e23538 /test/test/DottyBytecodeTests.scala
parentd5147288df4cc05ac4d761bd0e451f724c474ae1 (diff)
downloaddotty-5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841.tar.gz
dotty-5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841.tar.bz2
dotty-5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841.zip
Add test for `Array.ofDim`
Diffstat (limited to 'test/test/DottyBytecodeTests.scala')
-rw-r--r--test/test/DottyBytecodeTests.scala24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/test/DottyBytecodeTests.scala b/test/test/DottyBytecodeTests.scala
index 5b79772c4..717c8527a 100644
--- a/test/test/DottyBytecodeTests.scala
+++ b/test/test/DottyBytecodeTests.scala
@@ -82,4 +82,28 @@ class TestBCode extends DottyBytecodeTest {
assert(verifySwitch(methodNode, shouldFail = true))
}
}
+
+ /** Make sure that creating multidim arrays reduces to "multinewarray"
+ * instruction
+ */
+ @Test def multidimArrays = {
+ val source = """
+ |object Arr {
+ | def arr = Array.ofDim[Int](2, 1)
+ |}""".stripMargin
+ checkBCode(source) { dir =>
+ val moduleIn = dir.lookupName("Arr$.class", directory = false)
+ val moduleNode = loadClassNode(moduleIn.input)
+ val method = getMethod(moduleNode, "arr")
+
+ val hadCorrectInstr =
+ instructionsFromMethod(method)
+ .collect { case x @ NewArray(op, _, dims) if op == 197 && dims == 2 => x }
+ .length > 0
+
+ assert(hadCorrectInstr,
+ "Did not contain \"multianewarray\" instruction in:\n" +
+ instructionsFromMethod(method).mkString("\n"))
+ }
+ }
}