From 77f62c9faa4b03b6deb6d1e95afe9d88fb4e02c7 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 14 Oct 2013 10:37:32 +0200 Subject: Made tracing appear even when currently in StoreReporter context --- src/dotty/tools/dotc/reporting/Reporter.scala | 6 ++++-- src/dotty/tools/dotc/typer/Applications.scala | 6 +++--- src/dotty/tools/dotc/typer/Implicits.scala | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/dotty/tools/dotc/reporting/Reporter.scala b/src/dotty/tools/dotc/reporting/Reporter.scala index 6f5f3b5cb..960fddff7 100644 --- a/src/dotty/tools/dotc/reporting/Reporter.scala +++ b/src/dotty/tools/dotc/reporting/Reporter.scala @@ -144,14 +144,16 @@ trait Reporting { this: Context => } def traceIndented[T](leading: => String, trailing: Any => String)(op: => T): T = { var finalized = false + var logctx = this + while (logctx.reporter.isInstanceOf[StoreReporter]) logctx = logctx.outer def finalize(result: Any, note: String) = if (!finalized) { base.indent -= 1 - log(s"${base.indentTab * base.indent}${trailing(result)}$note") + logctx.log(s"${base.indentTab * base.indent}${trailing(result)}$note") finalized = true } try { - log(s"${base.indentTab * base.indent}$leading") + logctx.log(s"${base.indentTab * base.indent}$leading") base.indent += 1 val res = op finalize(res, "") diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala index ef0fcf709..ce2caab84 100644 --- a/src/dotty/tools/dotc/typer/Applications.scala +++ b/src/dotty/tools/dotc/typer/Applications.scala @@ -410,10 +410,9 @@ trait Applications extends Compatibility { self: Typer => } def sameSeq[T <: Trees.Tree[_]](xs: List[T], ys: List[T]): Boolean = firstDiff(xs, ys) < 0 - val result = { + val result ={ var typedArgs = typedArgBuf.toList - println(s"typed args of $methRef = $typedArgs") - val ownType = + val ownType = ctx.traceIndented(s"apply $methRef to $typedArgs") { if (!success) ErrorType else { if (!sameSeq(app.args, orderedArgs)) { @@ -428,6 +427,7 @@ trait Applications extends Compatibility { self: Typer => typedArgs = args.asInstanceOf[List[Tree]] methodType.instantiate(typedArgs.tpes) } + } val app1 = cpy.Apply(app, normalizedFun, typedArgs).withType(ownType) if (liftedDefs != null && liftedDefs.nonEmpty) Block(liftedDefs.toList, app1) else app1 diff --git a/src/dotty/tools/dotc/typer/Implicits.scala b/src/dotty/tools/dotc/typer/Implicits.scala index 27c2f1961..832693b98 100644 --- a/src/dotty/tools/dotc/typer/Implicits.scala +++ b/src/dotty/tools/dotc/typer/Implicits.scala @@ -259,7 +259,7 @@ trait Implicits { self: Typer => * @param pos The position where errors should be reported. */ def inferImplicit(pt: Type, argument: Tree, pos: Position)(implicit ctx: Context): SearchResult = track("inferImplicit") { - ctx.traceIndented(s"search implicit $pt, arg = ${argument.show}", show = true) { + ctx.traceIndented(s"search implicit ${pt.show}, arg = ${argument.show}", show = true) { val isearch = if (ctx.settings.explaintypes.value) new ExplainedImplicitSearch(pt, argument, pos) else new ImplicitSearch(pt, argument, pos) -- cgit v1.2.3