aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TyperState.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-01-18 18:35:02 +0100
committerMartin Odersky <odersky@gmail.com>2015-01-18 18:38:12 +0100
commitfbe4171404ac56a0fe8e6d54fa06bbd53e85bd97 (patch)
treebd05c10e99a025ea8cde678203af1c4dfbe11b60 /src/dotty/tools/dotc/core/TyperState.scala
parent566dd6e8a44090168ebe8e6703fea27152802286 (diff)
downloaddotty-fbe4171404ac56a0fe8e6d54fa06bbd53e85bd97.tar.gz
dotty-fbe4171404ac56a0fe8e6d54fa06bbd53e85bd97.tar.bz2
dotty-fbe4171404ac56a0fe8e6d54fa06bbd53e85bd97.zip
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.
Diffstat (limited to 'src/dotty/tools/dotc/core/TyperState.scala')
-rw-r--r--src/dotty/tools/dotc/core/TyperState.scala4
1 files changed, 2 insertions, 2 deletions
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)