summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2011-12-22 15:33:59 +0100
committerEugene Burmako <xeno.by@gmail.com>2011-12-22 15:56:59 +0100
commitd890d9f65c0d724b21e2847164b30a6bf8f4ee6b (patch)
treeb0bb385bba4fd5184c8b92bc58bf9d4084a4a8cf
parent91de7d6e65a2bc3096d3af5bd32f70e17627a02a (diff)
downloadscala-d890d9f65c0d724b21e2847164b30a6bf8f4ee6b.tar.gz
scala-d890d9f65c0d724b21e2847164b30a6bf8f4ee6b.tar.bz2
scala-d890d9f65c0d724b21e2847164b30a6bf8f4ee6b.zip
Non-essential TypeApply trees must be omitted, or they will cause a typecheck error
-rw-r--r--src/compiler/scala/tools/nsc/transform/LiftCode.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/LiftCode.scala b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
index f3f823d197..9404f0f699 100644
--- a/src/compiler/scala/tools/nsc/transform/LiftCode.scala
+++ b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
@@ -476,6 +476,10 @@ abstract class LiftCode extends Transform with TypingTransformers {
if (!(boundSyms exists (tt.tpe contains _))) mirrorCall("TypeTree", reifyType(tt.tpe))
else if (tt.original != null) reify(tt.original)
else mirrorCall("TypeTree")
+ case ta @ TypeApply(hk, ts) =>
+ val thereAreOnlyTTs = ts collect { case t if !t.isInstanceOf[TypeTree] => t } isEmpty;
+ val ttsAreNotEssential = ts collect { case tt: TypeTree => tt } find { tt => tt.original != null } isEmpty;
+ if (thereAreOnlyTTs && ttsAreNotEssential) reifyTree(hk) else reifyProduct(ta)
case global.emptyValDef =>
mirrorSelect("emptyValDef")
case _ =>