summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Zeiger <szeiger@novocode.com>2016-08-12 18:24:46 +0200
committerGitHub <noreply@github.com>2016-08-12 18:24:46 +0200
commit18bdbc83e1ac9baafbf18940ad1b87e4122fc978 (patch)
tree095995a837f3ac92fd94d780aa0e9bb5171de7a5 /src
parent0d9587a563ff26852732e9bb751f601972fecddc (diff)
parent53d55bc821a11a886094008211d43f2ee9b4c638 (diff)
downloadscala-18bdbc83e1ac9baafbf18940ad1b87e4122fc978.tar.gz
scala-18bdbc83e1ac9baafbf18940ad1b87e4122fc978.tar.bz2
scala-18bdbc83e1ac9baafbf18940ad1b87e4122fc978.zip
Merge pull request #5312 from szeiger/issue/8434-2
SI-8434 Make generic Set operations build the same kind of Set
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/generic/GenSetFactory.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/library/scala/collection/generic/GenSetFactory.scala b/src/library/scala/collection/generic/GenSetFactory.scala
index 800f66eb53..65404a4991 100644
--- a/src/library/scala/collection/generic/GenSetFactory.scala
+++ b/src/library/scala/collection/generic/GenSetFactory.scala
@@ -40,7 +40,11 @@ abstract class GenSetFactory[CC[X] <: GenSet[X] with GenSetLike[X, CC[X]]]
/** $setCanBuildFromInfo
*/
def setCanBuildFrom[A] = new CanBuildFrom[CC[_], A, CC[A]] {
- def apply(from: CC[_]) = newBuilder[A]
+ def apply(from: CC[_]) = from match {
+ // When building from an existing Set, try to preserve its type:
+ case from: Set[_] => from.genericBuilder.asInstanceOf[Builder[A, CC[A]]]
+ case _ => newBuilder[A]
+ }
def apply() = newBuilder[A]
}
}