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.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/TyperState.scala b/src/dotty/tools/dotc/core/TyperState.scala
index 4b3c1554d..a7ad6824f 100644
--- a/src/dotty/tools/dotc/core/TyperState.scala
+++ b/src/dotty/tools/dotc/core/TyperState.scala
@@ -96,7 +96,8 @@ extends TyperState(r) {
override def reporter = myReporter
- private var myConstraint: Constraint = previous.constraint
+ private val previousConstraint = previous.constraint
+ private var myConstraint: Constraint = previousConstraint
override def constraint = myConstraint
override def constraint_=(c: Constraint)(implicit ctx: Context) = {
@@ -129,8 +130,9 @@ extends TyperState(r) {
override def commit()(implicit ctx: Context) = {
val targetState = ctx.typerState
assert(isCommittable)
- if (targetState eq previous) targetState.constraint = constraint
- else targetState.constraint &= constraint
+ targetState.constraint =
+ if (targetState.constraint eq previousConstraint) constraint
+ else targetState.constraint & constraint
constraint foreachTypeVar { tvar =>
if (tvar.owningState eq this)
tvar.owningState = targetState