aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2015-03-27 23:45:02 +0100
committerGuillaume Martres <smarter@ubuntu.com>2015-03-27 23:45:40 +0100
commita40df059737a1b523bfa811596f1fce051e07477 (patch)
treec0ff6e80934b9a607d5041ca12c30d8b0dfa0534 /src
parentc5d8cba234ace613f5b064fc3cc58c8e547e45ce (diff)
downloaddotty-a40df059737a1b523bfa811596f1fce051e07477.tar.gz
dotty-a40df059737a1b523bfa811596f1fce051e07477.tar.bz2
dotty-a40df059737a1b523bfa811596f1fce051e07477.zip
Implicits#viewExists: return false after typer instead of AssertionError
This way, tpd#applyOverloaded can safely be used after typer. This issue was encoutered while working on value classes, step 3 of SIP-15 contains the following peephole optimization: new C(e) == new C(f) => e == f Which requires us to do overloading resolution.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/typer/Implicits.scala1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/typer/Implicits.scala b/src/dotty/tools/dotc/typer/Implicits.scala
index 23938ea99..1f5fd3899 100644
--- a/src/dotty/tools/dotc/typer/Implicits.scala
+++ b/src/dotty/tools/dotc/typer/Implicits.scala
@@ -380,6 +380,7 @@ trait Implicits { self: Typer =>
override def viewExists(from: Type, to: Type)(implicit ctx: Context): Boolean = (
!from.isError
&& !to.isError
+ && !ctx.isAfterTyper
&& (ctx.mode is Mode.ImplicitsEnabled)
&& { from.widenExpr match {
case from: TypeRef if defn.ScalaValueClasses contains from.symbol =>