diff options
author | Paul Phillips <paulp@improving.org> | 2012-06-30 21:48:10 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-06-30 21:49:27 -0700 |
commit | 39f01d4f48e59c2037a3af759eb6d55d0da50e70 (patch) | |
tree | 0eaddcf9392702fb93c74179e2cee2c9cad3d582 /src | |
parent | 0a9cea6ea58571deb67d60193d60d12be6bb0233 (diff) | |
download | scala-39f01d4f48e59c2037a3af759eb6d55d0da50e70.tar.gz scala-39f01d4f48e59c2037a3af759eb6d55d0da50e70.tar.bz2 scala-39f01d4f48e59c2037a3af759eb6d55d0da50e70.zip |
Fix for exponential compile time in specialization.
Review by @prokopec.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala index 124d350385..ffcb682cf7 100644 --- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala +++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala @@ -1366,7 +1366,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers { override def transform(tree: Tree): Tree = reportError { transform1(tree) } {_ => tree} - + def transform1(tree: Tree) = { val symbol = tree.symbol @@ -1437,7 +1437,10 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers { localTyper.typedOperator(atPos(tree.pos)(tree1)) // being polymorphic, it must be a method } - case None => super.transform(tree) + case None => + treeCopy.TypeApply(tree, treeCopy.Select(sel, qual1, name), super.transformTrees(targs)) + // See pos/exponential-spec.scala - can't call transform on the whole tree again. + // super.transform(tree) } case Select(Super(_, _), name) if illegalSpecializedInheritance(currentClass) => |