aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/ErrorReporting.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-09-16 17:56:17 +0200
committerMartin Odersky <odersky@gmail.com>2013-09-16 17:56:17 +0200
commitdba4f1ec3dc5f489056284aab63c771cdd32561c (patch)
treeab6af09b871c2a01741fd5bbe874a1e19a3fddea /src/dotty/tools/dotc/typer/ErrorReporting.scala
parent682cf32cbe5cebeccf9ea10caf43e74c9cecc7c0 (diff)
downloaddotty-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.scala11
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
}
}