summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-12-22 18:02:53 +0000
committerPaul Phillips <paulp@improving.org>2010-12-22 18:02:53 +0000
commitdb4bf36110a922bd41a900a90fb2c158280d027b (patch)
treeef2e829cf2133b36c94fa1623e6778800346c4cd /src
parentd5533fbf7020b316b77ea8f52eba96249eb6d881 (diff)
downloadscala-db4bf36110a922bd41a900a90fb2c158280d027b.tar.gz
scala-db4bf36110a922bd41a900a90fb2c158280d027b.tar.bz2
scala-db4bf36110a922bd41a900a90fb2c158280d027b.zip
Recognize calls to scala varargs methods where ...
Recognize calls to scala varargs methods where the parameter list is empty, and give Nil as the sequence rather than wrapping an empty Array. Review by odersky.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/UnCurry.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala
index aa3086c05b..bbb457b12e 100644
--- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala
+++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala
@@ -434,10 +434,12 @@ abstract class UnCurry extends InfoTransform with TypingTransformers with ast.Tr
else
if (tree.tpe.typeSymbol isSubClass TraversableClass) tree // @PP: I suspect this should be SeqClass
else arrayToSequence(tree, varargsElemType)
- } else {
- val tree = mkArrayValue(args drop (formals.length - 1), varargsElemType)
- if (isJava || inPattern) tree
- else arrayToSequence(tree, varargsElemType)
+ }
+ else {
+ def mkArray = mkArrayValue(args drop (formals.length - 1), varargsElemType)
+ if (isJava || inPattern) mkArray
+ else if (args.isEmpty) gen.mkNil // avoid needlessly double-wrapping an empty argument list
+ else arrayToSequence(mkArray, varargsElemType)
}
atPhase(phase.next) {