aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeComparer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-06-05 22:38:01 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-06 11:05:27 +0200
commit0ee8e506dac87bae6ec432b2cd277109df872145 (patch)
tree1a916c66c738c9005b534ed2efe48c382ccaa031 /src/dotty/tools/dotc/core/TypeComparer.scala
parent84bf5902dba61c88f1b50229bb3afa5a335ded94 (diff)
downloaddotty-0ee8e506dac87bae6ec432b2cd277109df872145.tar.gz
dotty-0ee8e506dac87bae6ec432b2cd277109df872145.tar.bz2
dotty-0ee8e506dac87bae6ec432b2cd277109df872145.zip
Skolemize unstable prefixes in asSeenFrom
Skolemize unstable prefixes in asSeenFrom provided - the prefix appears at least once in non-variant or contra-variant position - we are in phase typer. After typer, we have already established soundness, so there's no need to do skolemization again. We can simply do the (otherwise unsound) substitution from this-type to prefix.
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeComparer.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index 1f80a8a10..ea815f6c0 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -274,6 +274,11 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling {
case _ =>
thirdTry(tp1, tp2)
}
+ case tp1: SkolemType =>
+ tp2 match {
+ case tp2: SkolemType if !ctx.phase.isTyper && tp1.info <:< tp2.info => true
+ case _ => thirdTry(tp1, tp2)
+ }
case tp1: TypeVar =>
isSubType(tp1.underlying, tp2)
case tp1: WildcardType =>