aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 794f05319..718d01ebe 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -2096,6 +2096,13 @@ object Types {
if (lo eq tp) this
else TypeAlias(tp, variance)
+ /** If this is an alias, a derived alias with the new variance,
+ * Otherwise the type itself.
+ */
+ def withVariance(variance: Int)(implicit ctx: Context) =
+ if (lo ne hi) this
+ else derivedTypeBounds(lo, hi, variance)
+
def contains(tp: Type)(implicit ctx: Context) = tp match {
case tp: TypeBounds => lo <:< tp.lo && tp.hi <:< hi
case _ => lo <:< tp && tp <:< hi