diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-09-09 15:01:25 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-09-09 15:01:25 +0000 |
commit | 4d0f311f8fde1fd37e59dff7fcbc73e663effcd2 (patch) | |
tree | a59b0dffa67b36ffec97cda66f93f0778e5527bf /src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala | |
parent | ac499bec250987381df04c80700ba5d89f8f07ac (diff) | |
download | scala-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.scala | 10 |
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) { |