diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-05-17 22:06:59 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-05-17 22:06:59 +0200 |
commit | 5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841 (patch) | |
tree | b298e31c125bd7c2685cb7af8cb9b13c51e23538 | |
parent | d5147288df4cc05ac4d761bd0e451f724c474ae1 (diff) | |
download | dotty-5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841.tar.gz dotty-5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841.tar.bz2 dotty-5ef03c4bb477692d52ca3bd1d3b05b7dd1dd6841.zip |
Add test for `Array.ofDim`
-rw-r--r-- | test/test/DottyBytecodeTests.scala | 24 |
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")) + } + } } |