diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-02-24 15:40:42 +0100 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-03-05 09:40:32 -0800 |
commit | c8fbba0fd3149dc5642e6d56c4176244b55046fd (patch) | |
tree | a8689a5fe57367cc69f7ef4d402530cba449866e | |
parent | 9179c887cdf0ebc03c87e306cfa1cb99c5da3a88 (diff) | |
download | scala-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.
-rw-r--r-- | test/files/jvm/named-args-in-order.check | 3 | ||||
-rw-r--r-- | test/files/jvm/named-args-in-order/SameBytecode.scala | 9 | ||||
-rw-r--r-- | test/files/jvm/named-args-in-order/Test.scala | 10 |
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) + } +} |