diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2011-02-16 12:29:05 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2011-02-16 12:29:05 +0000 |
commit | 9f4c747c6d1bd866aead90d74ab56cfceb877f6e (patch) | |
tree | 1891fa571ac29fc1bcb557ffe1d3e95eff2c0d7e | |
parent | 066861f6f838adefa887854bb6b7d0df3bbcd91c (diff) | |
download | scala-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.scala | 10 |
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 + } } } |