diff options
author | Martin Odersky <odersky@gmail.com> | 2013-09-16 17:56:17 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-09-16 17:56:17 +0200 |
commit | dba4f1ec3dc5f489056284aab63c771cdd32561c (patch) | |
tree | ab6af09b871c2a01741fd5bbe874a1e19a3fddea /src/dotty/tools/dotc/typer/ErrorReporting.scala | |
parent | 682cf32cbe5cebeccf9ea10caf43e74c9cecc7c0 (diff) | |
download | dotty-dba4f1ec3dc5f489056284aab63c771cdd32561c.tar.gz dotty-dba4f1ec3dc5f489056284aab63c771cdd32561c.tar.bz2 dotty-dba4f1ec3dc5f489056284aab63c771cdd32561c.zip |
Bug fixes and improvements in error diagnostics.
Main refactoring: lub/glb moves to type comparers.
Diffstat (limited to 'src/dotty/tools/dotc/typer/ErrorReporting.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/ErrorReporting.scala | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/typer/ErrorReporting.scala b/src/dotty/tools/dotc/typer/ErrorReporting.scala index 57ea5ebda..a078476e3 100644 --- a/src/dotty/tools/dotc/typer/ErrorReporting.scala +++ b/src/dotty/tools/dotc/typer/ErrorReporting.scala @@ -68,11 +68,16 @@ object ErrorReporting { } def typeMismatchStr(found: Type, expected: Type) = { - if (ctx.settings.explaintypes.value) - (found <:< expected)(ctx.fresh.withTypeComparerFn(new ExplainingTypeComparer(_))) + val (typerStateStr, explanationStr) = + if (ctx.settings.explaintypes.value) { + val nestedCtx = ctx.fresh.withTypeComparerFn(new ExplainingTypeComparer(_)) + (found <:< expected)(nestedCtx) + ("\n" + ctx.typerState.show, "\n" + nestedCtx.typeComparer.toString) + } + else ("", "") i"""type mismatch: | found : $found - | required: $expected""".stripMargin + | required: $expected""".stripMargin + typerStateStr + explanationStr } } |