9
9
package scala
10
10
package xml
11
11
12
- import scala .collection .{ mutable , immutable , generic , SeqLike , AbstractSeq }
12
+ import scala .collection .{ mutable , immutable , AbstractSeq }
13
13
import mutable .{ Builder , ListBuffer }
14
- import generic .{ CanBuildFrom }
14
+ import ScalaVersionSpecific . CBF
15
15
import scala .language .implicitConversions
16
16
import scala .collection .Seq
17
17
@@ -25,12 +25,15 @@ object NodeSeq {
25
25
def fromSeq (s : Seq [Node ]): NodeSeq = new NodeSeq {
26
26
def theSeq = s
27
27
}
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.
28
33
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
+
34
37
def newBuilder : Builder [Node , NodeSeq ] = new ListBuffer [Node ] mapResult fromSeq
35
38
implicit def seqToNodeSeq (s : Seq [Node ]): NodeSeq = fromSeq(s)
36
39
}
@@ -41,11 +44,7 @@ object NodeSeq {
41
44
*
42
45
* @author Burak Emir
43
46
*/
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 {
49
48
def theSeq : Seq [Node ]
50
49
def length = theSeq.length
51
50
override def iterator = theSeq.iterator
0 commit comments