summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2011-02-16 12:29:05 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2011-02-16 12:29:05 +0000
commit9f4c747c6d1bd866aead90d74ab56cfceb877f6e (patch)
tree1891fa571ac29fc1bcb557ffe1d3e95eff2c0d7e
parent066861f6f838adefa887854bb6b7d0df3bbcd91c (diff)
downloadscala-9f4c747c6d1bd866aead90d74ab56cfceb877f6e.tar.gz
scala-9f4c747c6d1bd866aead90d74ab56cfceb877f6e.tar.bz2
scala-9f4c747c6d1bd866aead90d74ab56cfceb877f6e.zip
Fix in the unify, for a failing specialized test.
No review.
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index 632d3787c9..ceeac9d5a5 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -960,9 +960,10 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
else
if (strict) throw UnifyError else env
case (TypeRef(_, sym1, args1), TypeRef(_, sym2, args2)) =>
+ log("Unify - both type refs: " + tp1 + " and " + tp2 + " with args " + (args1, args2) + " - ")
if (strict && args1.length != args2.length) throw UnifyError
val e = unify(args1, args2, env, strict)
- log("Unify - both type refs: " + tp1 + " and " + tp2 + " with args " + (args1, args2) + " - " + e)
+ log("unified to: " + e)
e
case (TypeRef(_, sym1, _), _) if sym1.isTypeParameterOrSkolem =>
env
@@ -995,8 +996,11 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
if (!strict) unify(args._1, args._2, env, strict)
else {
val nenv = unify(args._1, args._2, emptyEnv, strict)
- if (env.keySet.intersect(nenv.keySet) == emptyEnv) env ++ nenv
- else throw UnifyError
+ if (env.keySet.intersect(nenv.keySet) == Set()) env ++ nenv
+ else {
+ log("could not unify: u(" + args._1 + ", " + args._2 + ") yields " + nenv + ", env: " + env)
+ throw UnifyError
+ }
}
}