aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-01-18 18:40:11 +0100
committerMartin Odersky <odersky@gmail.com>2016-02-19 14:00:55 +0100
commit6ee8569e6bf14412dc924fe1379a544f263397ed (patch)
treeab4136a1b5174e5d557fa790c051cfaa86638922 /src/dotty/tools/dotc/typer
parenta553296a6d32e062eed498241ae99bcc61c58529 (diff)
downloaddotty-6ee8569e6bf14412dc924fe1379a544f263397ed.tar.gz
dotty-6ee8569e6bf14412dc924fe1379a544f263397ed.tar.bz2
dotty-6ee8569e6bf14412dc924fe1379a544f263397ed.zip
Fix problem of overloading resolution when receiver is not stable.
Diffstat (limited to 'src/dotty/tools/dotc/typer')
-rw-r--r--src/dotty/tools/dotc/typer/Applications.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala
index 649b8088f..86980f337 100644
--- a/src/dotty/tools/dotc/typer/Applications.scala
+++ b/src/dotty/tools/dotc/typer/Applications.scala
@@ -262,8 +262,13 @@ trait Applications extends Compatibility { self: Typer =>
val receiver: Tree = methPart(normalizedFun) match {
case Select(receiver, _) => receiver
case mr => mr.tpe.normalizedPrefix match {
- case mr: TermRef => ref(mr)
- case _ => EmptyTree
+ case mr: TermRef =>
+ ref(mr)
+ case mr: TypeRef if this.isInstanceOf[TestApplication[_]] =>
+ // In this case it is safe to skolemize now; we will produce a stable prefix for the actual call.
+ ref(mr.narrow)
+ case _ =>
+ EmptyTree
}
}
val getterPrefix =