diff options
author | Martin Odersky <odersky@gmail.com> | 2015-01-14 19:06:25 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-01-14 19:09:34 +0100 |
commit | 566dd6e8a44090168ebe8e6703fea27152802286 (patch) | |
tree | 1fa6d213a9ecd459cbf1fbab36a5d9991d805c24 /src | |
parent | 19234838329aabfe202a2fbf46470528baebd83c (diff) | |
download | dotty-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.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/Skolemization.scala | 5 |
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 = |