aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/Run.scala2
-rw-r--r--src/dotty/tools/dotc/core/Constraint.scala19
-rw-r--r--src/dotty/tools/dotc/core/Contexts.scala2
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
}