summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-07-18 13:41:41 +1000
committerAdriaan Moors <adriaan.moors@typesafe.com>2016-08-23 15:51:52 -0700
commitc12dd768b6ec5db1ee5f9c811129332c8fcec2a6 (patch)
treed5356962201e8a1517d337dd68bbec387d468538
parenta91c81f604840696b2952dbdadd1206eb2522c0d (diff)
downloadscala-c12dd768b6ec5db1ee5f9c811129332c8fcec2a6.tar.gz
scala-c12dd768b6ec5db1ee5f9c811129332c8fcec2a6.tar.bz2
scala-c12dd768b6ec5db1ee5f9c811129332c8fcec2a6.zip
Unit test for recent bug fix in LUBs
-rw-r--r--test/junit/scala/reflect/internal/TypesTest.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/junit/scala/reflect/internal/TypesTest.scala b/test/junit/scala/reflect/internal/TypesTest.scala
index 763fd73c8a..585493280b 100644
--- a/test/junit/scala/reflect/internal/TypesTest.scala
+++ b/test/junit/scala/reflect/internal/TypesTest.scala
@@ -128,4 +128,15 @@ class TypesTest {
// calling `apply` merges the prefix/args of the elements ot the RefinedType and rewraps in the existential
assertEquals("M[_1] forSome { type X; type _1 >: X with Int }", T.baseTypeSeq.apply(1).toString)
}
+
+ @Test
+ def testExistentialMerge(): Unit = {
+ val ts = typeOf[Set[Any]] :: typeOf[Set[X] forSome { type X <: Y; type Y <: Int}] :: Nil
+ def merge(ts: List[Type]) = mergePrefixAndArgs(ts, Variance.Contravariant, lubDepth(ts))
+ val merged1 = merge(ts)
+ val merged2 = merge(ts.reverse)
+ assert(ts.forall(_ <:< merged1)) // use to fail before fix to mergePrefixAndArgs for existentials
+ assert(ts.forall(_ <:< merged2))
+ assert(merged1 =:= merged2)
+ }
}