aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Constraint.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/Constraint.scala')
-rw-r--r--src/dotty/tools/dotc/core/Constraint.scala15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/core/Constraint.scala b/src/dotty/tools/dotc/core/Constraint.scala
index c74428be5..af797c09b 100644
--- a/src/dotty/tools/dotc/core/Constraint.scala
+++ b/src/dotty/tools/dotc/core/Constraint.scala
@@ -43,7 +43,7 @@ class Constraint(val map: SimpleMap[PolyType, Array[Type]]) extends AnyVal with
/** A new constraint which is derived from this constraint by removing
* the type parameter `param` from the domain.
*/
- def - (param: PolyParam) = {
+ def - (param: PolyParam)(implicit ctx: Context) = {
val pt = param.binder
val pnum = param.paramNum
val entries = map(pt)
@@ -107,11 +107,16 @@ class Constraint(val map: SimpleMap[PolyType, Array[Type]]) extends AnyVal with
if entries(n).exists
} yield PolyParam(poly, n)
- override def toText(printer: Printer): Text = {
- val dom = domainPolys map (_.toText(printer))
+ def constrainedTypesText(printer: Printer): Text =
+ Text(domainPolys map (_.toText(printer)), ", ")
+
+ def constraintText(indent: Int, printer: Printer): Text = {
val assocs =
for (param <- domainParams)
- yield " " ~ param.toText(printer) ~ this(param).toText(printer)
- "Constraint(" ~ Text(dom, ", ") ~ ") {" ~ Text(assocs, "\n") ~ "}"
+ yield (" " * indent) ~ param.toText(printer) ~ this(param).toText(printer)
+ Text(assocs, "\n")
}
+
+ override def toText(printer: Printer): Text =
+ "Constraint(" ~ constrainedTypesText(printer) ~ ") {" ~ constraintText(2, printer) ~ "}"
}