summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Trees.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/reflect/scala/reflect/internal/Trees.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/reflect/scala/reflect/internal/Trees.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala
index 0180ed4c4f..2ba6c187b7 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -400,6 +400,14 @@ trait Trees extends api.Trees { self: SymbolTable =>
def ApplyConstructor(tpt: Tree, args: List[Tree]) = Apply(Select(New(tpt), nme.CONSTRUCTOR), args)
+ def NewFromConstructor(constructor: Symbol, args: List[Tree]) = {
+ assert(constructor.isConstructor, constructor)
+ val instance = New(TypeTree(constructor.owner.tpe))
+ val init = Select(instance, nme.CONSTRUCTOR) setSymbol constructor
+
+ Apply(init, args)
+ }
+
case class ApplyDynamic(qual: Tree, args: List[Tree])
extends SymTree with TermTree with ApplyDynamicApi
object ApplyDynamic extends ApplyDynamicExtractor