99package scala
1010package xml
1111
12- import scala .collection .{ mutable , immutable , generic , SeqLike , AbstractSeq }
12+ import scala .collection .{ mutable , immutable , AbstractSeq }
1313import mutable .{ Builder , ListBuffer }
14- import generic .{ CanBuildFrom }
14+ import ScalaVersionSpecific . CBF
1515import scala .language .implicitConversions
1616import scala .collection .Seq
1717
@@ -25,12 +25,15 @@ object NodeSeq {
2525 def fromSeq (s : Seq [Node ]): NodeSeq = new NodeSeq {
2626 def theSeq = s
2727 }
28+
29+ // ---
30+ // For 2.11 / 2.12 only. Moving the implicit to a parent trait of `object NodeSeq` and keeping it
31+ // in ScalaVersionSpecific doesn't work because the implicit becomes less specific, which leads to
32+ // ambiguities.
2833 type Coll = NodeSeq
29- implicit def canBuildFrom : CanBuildFrom [Coll , Node , NodeSeq ] =
30- new CanBuildFrom [Coll , Node , NodeSeq ] {
31- def apply (from : Coll ) = newBuilder
32- def apply () = newBuilder
33- }
34+ implicit def canBuildFrom : CBF [Coll , Node , NodeSeq ] = ScalaVersionSpecific .NodeSeqCBF
35+ // ---
36+
3437 def newBuilder : Builder [Node , NodeSeq ] = new ListBuffer [Node ] mapResult fromSeq
3538 implicit def seqToNodeSeq (s : Seq [Node ]): NodeSeq = fromSeq(s)
3639}
@@ -41,11 +44,7 @@ object NodeSeq {
4144 *
4245 * @author Burak Emir
4346 */
44- abstract class NodeSeq extends AbstractSeq [Node ] with immutable.Seq [Node ] with SeqLike [Node , NodeSeq ] with Equality with Serializable {
45-
46- /** Creates a list buffer as builder for this class */
47- override protected [this ] def newBuilder = NodeSeq .newBuilder
48-
47+ abstract class NodeSeq extends AbstractSeq [Node ] with immutable.Seq [Node ] with ScalaVersionSpecificNodeSeq with Equality with Serializable {
4948 def theSeq : Seq [Node ]
5049 def length = theSeq.length
5150 override def iterator = theSeq.iterator
0 commit comments