diff options
-rw-r--r-- | src/dotty/tools/dotc/Run.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Constraint.scala | 19 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Contexts.scala | 2 |
3 files changed, 12 insertions, 11 deletions
diff --git a/src/dotty/tools/dotc/Run.scala b/src/dotty/tools/dotc/Run.scala index c662aabfa..928bf753a 100644 --- a/src/dotty/tools/dotc/Run.scala +++ b/src/dotty/tools/dotc/Run.scala @@ -31,7 +31,7 @@ class Run(comp: Compiler)(implicit ctx: Context) { /** Print summary; return # of errors encountered */ def printSummary(): Reporter = { - Constraint.printMax() + ctx.runInfo.printMaxConstraint() val r = ctx.typerState.reporter r.printSummary r diff --git a/src/dotty/tools/dotc/core/Constraint.scala b/src/dotty/tools/dotc/core/Constraint.scala index 1df3c6ac5..010601450 100644 --- a/src/dotty/tools/dotc/core/Constraint.scala +++ b/src/dotty/tools/dotc/core/Constraint.scala @@ -72,13 +72,9 @@ class Constraint(val myMap: SimpleMap[PolyType, Array[Type]]) extends AnyVal wit * the entries corresponding to `pt` with `entries`. */ private def updateEntries(pt: PolyType, entries: Array[Type])(implicit ctx: Context) : Constraint = { - import Constraint._ val res = new Constraint(myMap.updated(pt, entries)) if (Config.checkConstraintsNonCyclic) checkNonCyclic(pt, entries) - if (res.myMap.size > maxSize) { - maxSize = res.myMap.size - maxConstraint = res - } + ctx.runInfo.recordConstraintSize(res) res } @@ -294,9 +290,14 @@ class Constraint(val myMap: SimpleMap[PolyType, Array[Type]]) extends AnyVal wit } } -object Constraint { - var maxSize = 0 - var maxConstraint: Constraint = _ - def printMax()(implicit ctx: Context) = +trait ConstraintRunInfo { self: RunInfo => + private var maxSize = 0 + private var maxConstraint: Constraint = _ + def recordConstraintSize(c: Constraint) = + if (c.myMap.size > maxSize) { + maxSize = c.myMap.size + maxConstraint = c + } + def printMaxConstraint()(implicit ctx: Context) = if (maxSize > 0) println(s"max constraint = ${maxConstraint.show}") } diff --git a/src/dotty/tools/dotc/core/Contexts.scala b/src/dotty/tools/dotc/core/Contexts.scala index 1d78eaf02..7ffdea1b3 100644 --- a/src/dotty/tools/dotc/core/Contexts.scala +++ b/src/dotty/tools/dotc/core/Contexts.scala @@ -486,7 +486,7 @@ object Contexts { } /** Info that changes on each compiler run */ - class RunInfo(initctx: Context) extends ImplicitRunInfo { + class RunInfo(initctx: Context) extends ImplicitRunInfo with ConstraintRunInfo { implicit val ctx: Context = initctx } |