diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-07-18 13:41:41 +1000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2016-08-23 15:51:52 -0700 |
commit | c12dd768b6ec5db1ee5f9c811129332c8fcec2a6 (patch) | |
tree | d5356962201e8a1517d337dd68bbec387d468538 /test | |
parent | a91c81f604840696b2952dbdadd1206eb2522c0d (diff) | |
download | scala-c12dd768b6ec5db1ee5f9c811129332c8fcec2a6.tar.gz scala-c12dd768b6ec5db1ee5f9c811129332c8fcec2a6.tar.bz2 scala-c12dd768b6ec5db1ee5f9c811129332c8fcec2a6.zip |
Unit test for recent bug fix in LUBs
Diffstat (limited to 'test')
-rw-r--r-- | test/junit/scala/reflect/internal/TypesTest.scala | 11 |
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) + } } |