diff --git a/src/library/scala/collection/StrictOptimizedSeqOps.scala b/src/library/scala/collection/StrictOptimizedSeqOps.scala index 396e53885081..360b3610f5c3 100644 --- a/src/library/scala/collection/StrictOptimizedSeqOps.scala +++ b/src/library/scala/collection/StrictOptimizedSeqOps.scala @@ -94,7 +94,7 @@ trait StrictOptimizedSeqOps [+A, +CC[_], +C] } override def intersect[B >: A](that: Seq[B]): C = - if (isEmpty || that.isEmpty) empty + if (isEmpty || that.isEmpty) newSpecificBuilder.result() else { val occ = occCounts(that) val b = newSpecificBuilder diff --git a/test/junit/scala/collection/StrictOptimizedSeqTest.scala b/test/junit/scala/collection/StrictOptimizedSeqTest.scala index aa2f18a5e98e..909adc48d716 100644 --- a/test/junit/scala/collection/StrictOptimizedSeqTest.scala +++ b/test/junit/scala/collection/StrictOptimizedSeqTest.scala @@ -1,6 +1,6 @@ package scala.collection -import org.junit.Assert.assertEquals +import org.junit.Assert.{assertEquals, assertTrue} import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 @@ -20,4 +20,24 @@ class StrictOptimizedSeqTest { assertEquals(Vector("a", "aa", "aaa", "bbbb"), result) } + + @Test + def `empty intersection has correct component type for array`(): Unit = { + val something = Array(3.14) + val nothing = Array[Double]() + val empty = Array.empty[Double] + + assertEquals(classOf[Double], nothing.intersect(something).getClass.getComponentType) + assertTrue(nothing.intersect(something).isEmpty) + + assertEquals(classOf[Double], empty.intersect(something).getClass.getComponentType) + assertTrue(empty.intersect(something).isEmpty) + assertEquals(classOf[Double], empty.intersect(nothing).getClass.getComponentType) + assertTrue(empty.intersect(nothing).isEmpty) + + assertEquals(classOf[Double], something.intersect(nothing).getClass.getComponentType) + assertTrue(something.intersect(nothing).isEmpty) + assertEquals(classOf[Double], something.intersect(empty).getClass.getComponentType) + assertTrue(something.intersect(empty).isEmpty) + } }