summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2009-12-10 15:32:30 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2009-12-10 15:32:30 +0000
commit63f5dbb0a67f8a61f4480a79863a99010bb00c6e (patch)
tree37ae4bc732fff0073969d3938672799e7a95040a
parentf8d6169dd378c7ebed25d811b28eda2572287931 (diff)
downloadscala-63f5dbb0a67f8a61f4480a79863a99010bb00c6e.tar.gz
scala-63f5dbb0a67f8a61f4480a79863a99010bb00c6e.tar.bz2
scala-63f5dbb0a67f8a61f4480a79863a99010bb00c6e.zip
closes #2784
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala8
-rw-r--r--test/files/run/names-defaults.scala6
2 files changed, 13 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
index 45249bde66..6802757083 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
@@ -145,8 +145,14 @@ abstract class TreeBuilder {
/** Create tree representing (unencoded) binary operation expression or pattern. */
def makeBinop(isExpr: Boolean, left: Tree, op: Name, right: Tree, opPos: Position): Tree = {
+ def mkNamed(args: List[Tree]) =
+ if (isExpr) args map {
+ case a @ Assign(id @ Ident(name), rhs) =>
+ atPos(a.pos) { AssignOrNamedArg(id, rhs) }
+ case e => e
+ } else args
val arguments = right match {
- case Parens(args) => args
+ case Parens(args) => mkNamed(args)
case _ => List(right)
}
if (isExpr) {
diff --git a/test/files/run/names-defaults.scala b/test/files/run/names-defaults.scala
index 7e6fcf3f3c..12176105cd 100644
--- a/test/files/run/names-defaults.scala
+++ b/test/files/run/names-defaults.scala
@@ -277,6 +277,12 @@ object Test extends Application {
}
}
+ // #2784
+ class Test2784 {
+ object t { def f(x: Int) = x }
+ val one = t f (x = 1)
+ }
+
// DEFINITIONS
def test1(a: Int, b: String) = println(a +": "+ b)
def test2(u: Int, v: Int)(k: String, l: Int) = println(l +": "+ k +", "+ (u + v))