aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/reporting/Reporter.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-09-05 18:06:36 +0200
committerMartin Odersky <odersky@gmail.com>2016-10-02 16:11:21 +0200
commit5a345e7100450d39edf0034cc5b83bdb9a851cfa (patch)
tree086057223057ac267dee771e89a189c92cc150fd /src/dotty/tools/dotc/reporting/Reporter.scala
parent5396a6b3a4cb152d93dbb4947af688fdad1e2508 (diff)
downloaddotty-5a345e7100450d39edf0034cc5b83bdb9a851cfa.tar.gz
dotty-5a345e7100450d39edf0034cc5b83bdb9a851cfa.tar.bz2
dotty-5a345e7100450d39edf0034cc5b83bdb9a851cfa.zip
Inline key operations in dotty
Inlined operations are: Stats.track and all variants of Reporter.traceIndented.
Diffstat (limited to 'src/dotty/tools/dotc/reporting/Reporter.scala')
-rw-r--r--src/dotty/tools/dotc/reporting/Reporter.scala28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/dotty/tools/dotc/reporting/Reporter.scala b/src/dotty/tools/dotc/reporting/Reporter.scala
index b3d173a42..68ed972e1 100644
--- a/src/dotty/tools/dotc/reporting/Reporter.scala
+++ b/src/dotty/tools/dotc/reporting/Reporter.scala
@@ -140,28 +140,32 @@ trait Reporting { this: Context =>
def debugwarn(msg: => String, pos: SourcePosition = NoSourcePosition): Unit =
if (this.settings.debug.value) warning(msg, pos)
- def debugTraceIndented[T](question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => T): T =
+ @dotty.annotation.inline
+ def debugTraceIndented[TD](question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => TD): TD =
conditionalTraceIndented(this.settings.debugTrace.value, question, printer, show)(op)
- def conditionalTraceIndented[T](cond: Boolean, question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => T): T =
- if (cond) traceIndented(question, printer, show)(op)
+ @dotty.annotation.inline
+ def conditionalTraceIndented[TC](cond: Boolean, question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => TC): TC =
+ if (cond) traceIndented[TC](question, printer, show)(op)
else op
- def traceIndented[T](question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => T): T = {
+ @dotty.annotation.inline
+ def traceIndented[T](question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => T): T =
+ if (printer eq config.Printers.noPrinter) op
+ else doTraceIndented[T](question, printer, show)(op)
+
+ def doTraceIndented[T](question: => String, printer: Printers.Printer = Printers.default, show: Boolean = false)(op: => T): T = {
def resStr(res: Any): String = res match {
case res: printing.Showable if show => res.show
case _ => String.valueOf(res)
}
- if (printer eq config.Printers.noPrinter) op
- else {
- // Avoid evaluating question multiple time, since each evaluation
- // may cause some extra logging output.
- lazy val q: String = question
- traceIndented[T](s"==> $q?", (res: Any) => s"<== $q = ${resStr(res)}")(op)
- }
+ // Avoid evaluating question multiple time, since each evaluation
+ // may cause some extra logging output.
+ lazy val q: String = question
+ doTraceIndented[T](s"==> $q?", (res: Any) => s"<== $q = ${resStr(res)}")(op)
}
- def traceIndented[T](leading: => String, trailing: Any => String)(op: => T): T =
+ def doTraceIndented[T](leading: => String, trailing: Any => String)(op: => T): T =
if (ctx.mode.is(Mode.Printing)) op
else {
var finalized = false