diff options
author | Paul Phillips <paulp@improving.org> | 2012-08-31 08:43:33 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-08-31 16:57:20 -0700 |
commit | 7206df0374add1bcf73e15f61a024852463f6fc9 (patch) | |
tree | 0d8e7d36f0828d0cff2bc8cc10ba6adf4143097f /src/reflect/scala/reflect/internal/Trees.scala | |
parent | a3680be29ccd5314c5d027d473b37940eaecd530 (diff) | |
download | scala-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.scala | 8 |
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 |