aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TyperState.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/TyperState.scala')
-rw-r--r--src/dotty/tools/dotc/core/TyperState.scala10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/TyperState.scala b/src/dotty/tools/dotc/core/TyperState.scala
index b00e55e29..7f161d994 100644
--- a/src/dotty/tools/dotc/core/TyperState.scala
+++ b/src/dotty/tools/dotc/core/TyperState.scala
@@ -18,7 +18,7 @@ class TyperState(val reporter: Reporter = ThrowingReporter) extends DotClass {
/** A map that records for instantiated type vars their instance type.
* Used only in a temporary way for contexts that may be retracted
- * without also retracting the type var.
+ * without also retracting the type var.
*/
def instType: SimpleMap[TypeVar, Type] = SimpleMap.Empty
@@ -34,6 +34,9 @@ class TyperState(val reporter: Reporter = ThrowingReporter) extends DotClass {
class MutableTyperState(previous: TyperState, reporter: Reporter)
extends TyperState(reporter) {
+ def checkConsistent() =
+ for (tvar <- undetVars) assert(constraint(tvar.origin) != NoType, tvar)
+
private var myConstraint: Constraint = previous.constraint
private var myUndetVars: Set[TypeVar] = previous.undetVars
private var myInstType: SimpleMap[TypeVar, Type] = previous.instType
@@ -43,7 +46,10 @@ extends TyperState(reporter) {
override def instType = myInstType
override def constraint_=(c: Constraint) = myConstraint = c
- override def undetVars_=(vs: Set[TypeVar]) = myUndetVars = vs
+ override def undetVars_=(vs: Set[TypeVar]) = {
+ myUndetVars = vs
+ //checkConsistent()
+ }
override def instType_=(m: SimpleMap[TypeVar, Type]): Unit = myInstType = m
override def fresh: TyperState = new MutableTyperState(this, new StoreReporter)