diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2011-12-22 15:33:59 +0100 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2011-12-22 15:56:59 +0100 |
commit | d890d9f65c0d724b21e2847164b30a6bf8f4ee6b (patch) | |
tree | b0bb385bba4fd5184c8b92bc58bf9d4084a4a8cf | |
parent | 91de7d6e65a2bc3096d3af5bd32f70e17627a02a (diff) | |
download | scala-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.scala | 4 |
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 _ => |