From fbe4171404ac56a0fe8e6d54fa06bbd53e85bd97 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sun, 18 Jan 2015 18:35:02 +0100 Subject: New constraint handling New constraint handling scheme using constraints that distinguish more between parameter and non-parameter bounds and which track parameter bounds separately. This allows a co-inductive formulation of satisfiability checking without fishy cyclicity checks. It should also scale better for long chains of dependent type variables. --- src/dotty/tools/dotc/core/TyperState.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/dotty/tools/dotc/core/TyperState.scala') diff --git a/src/dotty/tools/dotc/core/TyperState.scala b/src/dotty/tools/dotc/core/TyperState.scala index cb8538e26..bdba128a9 100644 --- a/src/dotty/tools/dotc/core/TyperState.scala +++ b/src/dotty/tools/dotc/core/TyperState.scala @@ -17,7 +17,7 @@ class TyperState(r: Reporter) extends DotClass with Showable { def reporter = r /** The current constraint set */ - def constraint: Constraint = new NaiveConstraint(SimpleMap.Empty)//new TrackingConstraint(SimpleMap.Empty, Array(), Array()) + def constraint: Constraint = new TrackingConstraint(SimpleMap.Empty, Array(), Array()) def constraint_=(c: Constraint): Unit = {} /** The uninstantiated variables */ @@ -38,7 +38,7 @@ class TyperState(r: Reporter) extends DotClass with Showable { * is done only in a temporary way for contexts that may be retracted * without also retracting the type var as a whole. */ - def instType(tvar: TypeVar)(implicit ctx: Context): Type = constraint.at(tvar.origin) match { + def instType(tvar: TypeVar)(implicit ctx: Context): Type = constraint.entry(tvar.origin) match { case _: TypeBounds => NoType case tp: PolyParam => var tvar1 = constraint.typeVarOfParam(tp) -- cgit v1.2.3