aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-12-20 11:32:15 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2016-01-04 11:20:42 +0100
commitf0c6814a61768155d3e8c08093f365fce6360527 (patch)
treef84befaabcd01226135f955587b14bb718734136 /src
parenta1a2961a3aba856f7753005541e439636ff1c5b6 (diff)
downloaddotty-f0c6814a61768155d3e8c08093f365fce6360527.tar.gz
dotty-f0c6814a61768155d3e8c08093f365fce6360527.tar.bz2
dotty-f0c6814a61768155d3e8c08093f365fce6360527.zip
Allow comparisons between TypeRefs and ThisTypes.
Motivation comes from Linker: List$.canBuildFrom is implemented as ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]] static type of field ReusableCBF here is TypeRef(TypeRef(List$), GenericCanBuildFrom[Nothing]) but the ident ReusableCBF gets type TypeRef(ThisType(List$), GenericCanBuildFrom[Nothing]) We already permit comparisons between static TermRefs and ThisTypes, this change additionally allows TypeRefs to static modules to become subtypes of ThisTypes of static modules.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index 163fa4919..ac4b8c366 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -218,7 +218,7 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling {
val cls1 = tp1.cls
cls1.classInfo.selfType.derivesFrom(cls2) &&
cls2.classInfo.selfType.derivesFrom(cls1)
- case tp1: TermRef if cls2.is(Module) && cls2.eq(tp1.widen.typeSymbol) =>
+ case tp1: NamedType if cls2.is(Module) && cls2.eq(tp1.widen.typeSymbol) =>
cls2.isStaticOwner ||
isSubType(tp1.prefix, cls2.owner.thisType) ||
secondTry(tp1, tp2)