summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/TreeGen.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-08-31 08:43:33 -0700
committerPaul Phillips <paulp@improving.org>2012-08-31 16:57:20 -0700
commit7206df0374add1bcf73e15f61a024852463f6fc9 (patch)
tree0d8e7d36f0828d0cff2bc8cc10ba6adf4143097f /src/compiler/scala/tools/nsc/ast/TreeGen.scala
parenta3680be29ccd5314c5d027d473b37940eaecd530 (diff)
downloadscala-7206df0374add1bcf73e15f61a024852463f6fc9.tar.gz
scala-7206df0374add1bcf73e15f61a024852463f6fc9.tar.bz2
scala-7206df0374add1bcf73e15f61a024852463f6fc9.zip
Don't synthesize trees with overloaded calls.
Finding call sites where we would generate (and get away with) an overloaded constructor call after overloading resolution is already done.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeGen.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreeGen.scala5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
index 3ccd8ec4ae..0e65bfca6d 100644
--- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
@@ -52,7 +52,10 @@ abstract class TreeGen extends reflect.internal.TreeGen with TreeDSL {
}
// wrap the given expression in a SoftReference so it can be gc-ed
- def mkSoftRef(expr: Tree): Tree = atPos(expr.pos)(New(SoftReferenceClass.tpe, expr))
+ def mkSoftRef(expr: Tree): Tree = atPos(expr.pos) {
+ val constructor = SoftReferenceClass.info.nonPrivateMember(nme.CONSTRUCTOR).suchThat(_.paramss.flatten.size == 1)
+ NewFromConstructor(constructor, List(expr))
+ }
// annotate the expression with @unchecked
def mkUnchecked(expr: Tree): Tree = atPos(expr.pos) {