diff options
author | Paul Phillips <paulp@improving.org> | 2013-02-22 06:36:18 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-02-22 06:36:18 -0800 |
commit | 03d0eb776b03704f4b8fbb9fa7eaee4517629794 (patch) | |
tree | ed049d19dae951e8b15e7c8e2fc37c68df41bc86 /test/files | |
parent | 70956e560a11996e1d801d59b312dfe9d56b7a74 (diff) | |
parent | d8ba6afbd4c039b26562a331f0b1ec3885c0e121 (diff) | |
download | scala-03d0eb776b03704f4b8fbb9fa7eaee4517629794.tar.gz scala-03d0eb776b03704f4b8fbb9fa7eaee4517629794.tar.bz2 scala-03d0eb776b03704f4b8fbb9fa7eaee4517629794.zip |
Merge pull request #2145 from paulp/pr/value-class-extractors
Boxing cleanup: erasure, post-erasure, value classes.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/jvm/value-class-boxing.check | 7 | ||||
-rw-r--r-- | test/files/jvm/value-class-boxing/Analyzed_1.scala | 17 | ||||
-rw-r--r-- | test/files/jvm/value-class-boxing/test.scala | 15 |
3 files changed, 39 insertions, 0 deletions
diff --git a/test/files/jvm/value-class-boxing.check b/test/files/jvm/value-class-boxing.check new file mode 100644 index 0000000000..20a9fe2ba8 --- /dev/null +++ b/test/files/jvm/value-class-boxing.check @@ -0,0 +1,7 @@ +a2 and a1: bytecode identical +a3 and a1: bytecode identical +a4 and a1: bytecode identical +b2 and b1: bytecode identical +b3 and b1: bytecode identical +b4 and b1: bytecode identical +b5 and b1: bytecode identical diff --git a/test/files/jvm/value-class-boxing/Analyzed_1.scala b/test/files/jvm/value-class-boxing/Analyzed_1.scala new file mode 100644 index 0000000000..dec8565351 --- /dev/null +++ b/test/files/jvm/value-class-boxing/Analyzed_1.scala @@ -0,0 +1,17 @@ +class Wrap(val x: Int) extends AnyVal { + def ***(other: Bip): Wrap = new Wrap(x * other.x) +} +class Bip(val x: Int) extends AnyVal + +class SameBytecode { + def a1(x: Int, y: Int): Int = x + y + def a2(x: Wrap, y: Wrap): Wrap = new Wrap(x.x + y.x) + def a3(x: Int, y: Wrap): Wrap = new Wrap(x + y.x) + def a4(x: Int, y: Wrap): Int = x + y.x + + def b1(x: Wrap, y: Int): Int = (x *** new Bip(y)).x + def b2(x: Wrap, y: Bip): Wrap = x *** y + def b3(x: Wrap, y: Int): Wrap = x *** new Bip(y) + def b4(x: Wrap, y: Bip): Bip = new Bip((x *** y).x) + def b5(x: Wrap, y: Int): Bip = new Bip((x *** new Bip(y)).x) +} diff --git a/test/files/jvm/value-class-boxing/test.scala b/test/files/jvm/value-class-boxing/test.scala new file mode 100644 index 0000000000..cf331832de --- /dev/null +++ b/test/files/jvm/value-class-boxing/test.scala @@ -0,0 +1,15 @@ +import scala.tools.partest.BytecodeTest + +object Test extends BytecodeTest { + def show: Unit = { + val classNode = loadClassNode("SameBytecode") + List("a2", "a3", "a4") foreach { m => + print(m + " and a1: ") + sameBytecode(getMethod(classNode, "a1"), getMethod(classNode, m)) + } + List("b2", "b3", "b4", "b5") foreach { m => + print(m + " and b1: ") + sameBytecode(getMethod(classNode, "b1"), getMethod(classNode, m)) + } + } +} |