diff options
author | Martin Odersky <odersky@gmail.com> | 2014-02-09 13:32:16 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-02-09 13:32:55 +0100 |
commit | cd64021dc45e937b19980e2f80e3961021bf6918 (patch) | |
tree | e9c8844dc67faf1d25ed54f4b1d8727b426bcd5a /src/dotty/tools/dotc/core/Constraint.scala | |
parent | 9ceedf229de878dc7e6fc485dc11f9f92af8fe1c (diff) | |
download | dotty-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.scala | 19 |
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}") } |