diff options
author | Martin Odersky <odersky@gmail.com> | 2016-01-18 18:40:11 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-02-19 14:00:55 +0100 |
commit | 6ee8569e6bf14412dc924fe1379a544f263397ed (patch) | |
tree | ab4136a1b5174e5d557fa790c051cfaa86638922 /src/dotty/tools/dotc/typer | |
parent | a553296a6d32e062eed498241ae99bcc61c58529 (diff) | |
download | dotty-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.scala | 9 |
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 = |