diff options
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 } } |