summaryrefslogtreecommitdiff
path: root/test/files/jvm
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-02-24 15:40:42 +0100
committerPaul Phillips <paulp@improving.org>2013-03-05 09:40:32 -0800
commitc8fbba0fd3149dc5642e6d56c4176244b55046fd (patch)
treea8689a5fe57367cc69f7ef4d402530cba449866e /test/files/jvm
parent9179c887cdf0ebc03c87e306cfa1cb99c5da3a88 (diff)
downloadscala-c8fbba0fd3149dc5642e6d56c4176244b55046fd.tar.gz
scala-c8fbba0fd3149dc5642e6d56c4176244b55046fd.tar.bz2
scala-c8fbba0fd3149dc5642e6d56c4176244b55046fd.zip
Check named-args-for-clarity incur no extra bytecode
When named arguments correspond the the parameter declaration order, the compiler should not lift out assignments before the method call, as it would have to do for out-of-order arguments. Confirm this with a bytecode comparison test.
Diffstat (limited to 'test/files/jvm')
-rw-r--r--test/files/jvm/named-args-in-order.check3
-rw-r--r--test/files/jvm/named-args-in-order/SameBytecode.scala9
-rw-r--r--test/files/jvm/named-args-in-order/Test.scala10
3 files changed, 22 insertions, 0 deletions
diff --git a/test/files/jvm/named-args-in-order.check b/test/files/jvm/named-args-in-order.check
new file mode 100644
index 0000000000..29a3ba55d3
--- /dev/null
+++ b/test/files/jvm/named-args-in-order.check
@@ -0,0 +1,3 @@
+bytecode identical
+bytecode identical
+bytecode identical
diff --git a/test/files/jvm/named-args-in-order/SameBytecode.scala b/test/files/jvm/named-args-in-order/SameBytecode.scala
new file mode 100644
index 0000000000..c00641777e
--- /dev/null
+++ b/test/files/jvm/named-args-in-order/SameBytecode.scala
@@ -0,0 +1,9 @@
+class SameBytecode {
+ def foo(a: Int, b: String) = 0
+ def foo(a: Int, b: Any) = 0
+
+ def a = foo(0, "")
+ def b = foo(a = 0, "")
+ def c = foo(0, b = "")
+ def d = foo(a = 0, b = "")
+} \ No newline at end of file
diff --git a/test/files/jvm/named-args-in-order/Test.scala b/test/files/jvm/named-args-in-order/Test.scala
new file mode 100644
index 0000000000..36b9cbc1d1
--- /dev/null
+++ b/test/files/jvm/named-args-in-order/Test.scala
@@ -0,0 +1,10 @@
+import scala.tools.partest.BytecodeTest
+
+object Test extends BytecodeTest {
+ def show: Unit = {
+ val classNode = loadClassNode("SameBytecode")
+ def sameAsA(meth: String) =
+ sameBytecode(getMethod(classNode, "a"), getMethod(classNode, meth))
+ Seq("b", "c", "d").foreach(sameAsA)
+ }
+}