aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/OrderingConstraint.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-09-24 16:23:12 +0200
committerMartin Odersky <odersky@gmail.com>2015-10-01 19:33:25 +0200
commit6288a1bb35f8167ad3ba8784fb9ac95e7fbde7e7 (patch)
tree219587cc8d431422cbe63940b08f3a58382a5dde /src/dotty/tools/dotc/core/OrderingConstraint.scala
parent3f4c6a2b63bf94526792d108eaffc761d7d19ee5 (diff)
downloaddotty-6288a1bb35f8167ad3ba8784fb9ac95e7fbde7e7.tar.gz
dotty-6288a1bb35f8167ad3ba8784fb9ac95e7fbde7e7.tar.bz2
dotty-6288a1bb35f8167ad3ba8784fb9ac95e7fbde7e7.zip
Implement toString for OrderingConstraint
We had problems printing constraints which are ill-formed, because the basic operations & , | cause exceptions themselves. toString serves as a fallback if show does not work.
Diffstat (limited to 'src/dotty/tools/dotc/core/OrderingConstraint.scala')
-rw-r--r--src/dotty/tools/dotc/core/OrderingConstraint.scala19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/OrderingConstraint.scala b/src/dotty/tools/dotc/core/OrderingConstraint.scala
index 7e27ee628..e818862cb 100644
--- a/src/dotty/tools/dotc/core/OrderingConstraint.scala
+++ b/src/dotty/tools/dotc/core/OrderingConstraint.scala
@@ -129,7 +129,6 @@ class OrderingConstraint(private val boundsMap: ParamBounds,
type This = OrderingConstraint
-
// ----------- Basic indices --------------------------------------------------
/** The number of type parameters in the given entry array */
@@ -576,4 +575,22 @@ class OrderingConstraint(private val boundsMap: ParamBounds,
}
Text.lines(List(header, uninstVarsText, constrainedText, boundsText, orderingText, ")"))
}
+
+ override def toString: String = {
+ def entryText(tp: Type): String = tp match {
+ case tp: TypeBounds => tp.toString
+ case _ =>" := " + tp
+ }
+ val constrainedText =
+ " constrained types = " + domainPolys.mkString("\n")
+ val boundsText =
+ " bounds = " + {
+ val assocs =
+ for (param <- domainParams)
+ yield
+ param.binder.paramNames(param.paramNum) + ": " + entryText(entry(param))
+ assocs.mkString("\n")
+ }
+ constrainedText + "\n" + boundsText
+ }
}