diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2015-03-27 23:45:02 +0100 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2015-03-27 23:45:40 +0100 |
commit | a40df059737a1b523bfa811596f1fce051e07477 (patch) | |
tree | c0ff6e80934b9a607d5041ca12c30d8b0dfa0534 /src | |
parent | c5d8cba234ace613f5b064fc3cc58c8e547e45ce (diff) | |
download | dotty-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.scala | 1 |
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 => |