aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Constraint.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-02-09 13:32:16 +0100
committerMartin Odersky <odersky@gmail.com>2014-02-09 13:32:55 +0100
commitcd64021dc45e937b19980e2f80e3961021bf6918 (patch)
treee9c8844dc67faf1d25ed54f4b1d8727b426bcd5a /src/dotty/tools/dotc/core/Constraint.scala
parent9ceedf229de878dc7e6fc485dc11f9f92af8fe1c (diff)
downloaddotty-cd64021dc45e937b19980e2f80e3961021bf6918.tar.gz
dotty-cd64021dc45e937b19980e2f80e3961021bf6918.tar.bz2
dotty-cd64021dc45e937b19980e2f80e3961021bf6918.zip
Move maxConstraint computation to RunInfo to avoid references to stale symbols.
Diffstat (limited to 'src/dotty/tools/dotc/core/Constraint.scala')
-rw-r--r--src/dotty/tools/dotc/core/Constraint.scala19
1 files changed, 10 insertions, 9 deletions
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}")
}