summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-09-09 15:01:25 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-09-09 15:01:25 +0000
commit4d0f311f8fde1fd37e59dff7fcbc73e663effcd2 (patch)
treea59b0dffa67b36ffec97cda66f93f0778e5527bf /src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
parentac499bec250987381df04c80700ba5d89f8f07ac (diff)
downloadscala-4d0f311f8fde1fd37e59dff7fcbc73e663effcd2.tar.gz
scala-4d0f311f8fde1fd37e59dff7fcbc73e663effcd2.tar.bz2
scala-4d0f311f8fde1fd37e59dff7fcbc73e663effcd2.zip
Merge branch 'ticket/3435'
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index 9c7059bc76..02f94f684a 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -616,7 +616,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
.format(unusedStvars.mkString("", ", ", ""), if (unusedStvars.length == 1) "is" else "are"))
unusedStvars foreach (_.removeAnnotation(SpecializedClass))
stps = stps filterNot (unusedStvars contains)
- tps = tps ::: unusedStvars
+ tps = sym.info.typeParams filterNot (_.hasAnnotation(SpecializedClass))
}
val res = sym :: (for (env <- specializations(stps) if needsSpecialization(env, sym)) yield {
val keys = env.keysIterator.toList;
@@ -1267,11 +1267,17 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
val meth = addBody(tree, source)
if (settings.debug.value) log("now typing: " + meth + " in " + symbol.owner.fullName)
val d = new Duplicator
+ try {
d.retyped(localTyper.context1.asInstanceOf[d.Context],
meth,
source.enclClass,
symbol.enclClass,
typeEnv(source) ++ typeEnv(symbol))
+ } catch {
+ case e =>
+ println("error compiling %s [%s]".format(unit, tree.pos))
+ throw e
+ }
}
@@ -1460,7 +1466,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
}
class SpecializationTransformer(unit: CompilationUnit) extends Transformer {
- log("specializing " + unit)
+ informProgress("specializing " + unit)
override def transform(tree: Tree) =
if (settings.nospecialization.value) tree
else atPhase(phase.next) {