aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-01-14 19:06:25 +0100
committerMartin Odersky <odersky@gmail.com>2015-01-14 19:09:34 +0100
commit566dd6e8a44090168ebe8e6703fea27152802286 (patch)
tree1fa6d213a9ecd459cbf1fbab36a5d9991d805c24
parent19234838329aabfe202a2fbf46470528baebd83c (diff)
downloaddotty-566dd6e8a44090168ebe8e6703fea27152802286.tar.gz
dotty-566dd6e8a44090168ebe8e6703fea27152802286.tar.bz2
dotty-566dd6e8a44090168ebe8e6703fea27152802286.zip
Fix skolemization logic.
The skolemsOutstanding flag was reset too early. Just de-skolemizing one type does not guarantee that all further types are skolem-free.
-rw-r--r--src/dotty/tools/dotc/core/Skolemization.scala5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/Skolemization.scala b/src/dotty/tools/dotc/core/Skolemization.scala
index d9e35af9d..2e517c90e 100644
--- a/src/dotty/tools/dotc/core/Skolemization.scala
+++ b/src/dotty/tools/dotc/core/Skolemization.scala
@@ -33,10 +33,7 @@ trait Skolemization {
* else return the largest subtype.
*/
final def deSkolemize(tp: Type, toSuper: Boolean): Type =
- if (skolemsOutstanding) {
- skolemsOutstanding = false
- deSkolemize(tp, if (toSuper) 1 else -1, Set())
- }
+ if (skolemsOutstanding) deSkolemize(tp, if (toSuper) 1 else -1, Set())
else tp
private def deSkolemize(tp: Type, variance: Int, seen: Set[SkolemType]): Type =