summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-07-03 00:28:36 -0700
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-07-03 00:28:36 -0700
commitb95294507f95f694269f696fa0e679f805f3bfd3 (patch)
treec34c7f68fb3fb6530b9c8fac90b5e9ef731c3437 /src/compiler
parent33936243bdf597e438de8d10ae7b3ed30454be9f (diff)
parent39f01d4f48e59c2037a3af759eb6d55d0da50e70 (diff)
downloadscala-b95294507f95f694269f696fa0e679f805f3bfd3.tar.gz
scala-b95294507f95f694269f696fa0e679f805f3bfd3.tar.bz2
scala-b95294507f95f694269f696fa0e679f805f3bfd3.zip
Merge pull request #801 from paulp/issue/exponential-spec
Fix for exponential compile time in specialization.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala7
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) =>