1
+ object Test {
2
+ import scala .xml .*
3
+ def main (args : Array [String ]): Unit = {
4
+
5
+ val xml = if (true ) {
6
+ <script type =" text/javascript" >
7
+ ' location .reload()'
8
+ ' foo bar'
9
+ </script >
10
+ } else <div >empty</div >
11
+
12
+ assert(
13
+ xml match
14
+ case elm : Elem if
15
+ elm.label == " script"
16
+ && elm.child.length == 1
17
+ && elm.child(0 ) == Atom (Text (" \n 'location.reload()'\n 'foo bar'\n " ))
18
+ => true
19
+ case _ => false
20
+ ,
21
+ xml
22
+ )
23
+ // Scala 3 syntax
24
+ val auxiliary0 = if true then {
25
+ <script type =" text/javascript" >
26
+ ' location .reload()'
27
+ ' foo bar'
28
+ </script >
29
+ } else <div >empty</div >
30
+
31
+ val auxiliary1 = if true then
32
+ <script type =" text/javascript" >
33
+ ' location .reload()'
34
+ ' foo bar'
35
+ </script >
36
+ else <div >empty</div >
37
+
38
+ val auxiliary2 = if true then <div >A </div >else <div >B </div >
39
+
40
+ // Note:
41
+ // This does not pass in Scala 2.12.18 and 2.13.12
42
+ // due to "Sequence argument type annotation `: _*` cannot be used here:"
43
+ val auxiliary3 = if (true ) <div >A </div >else <div >B </div >
44
+
45
+ // Note: This passes in Scala 2.12.18 and 2.13.12 too.
46
+ val auxiliary4 = if (true ) <div attr =" ..." >A </div >else <div attr =" ..." >B </div >
47
+
48
+ // Pattern match without guard.
49
+ // Note: This passes in Scala 2.12.18 and 2.13.12 too.
50
+ val auxiliary5 = for (case _ @ <div >empty</div > <- Seq (xml)) yield ()
51
+ // Note: These pass in Scala 2.12.18 and 2.13.12.
52
+ val auxiliary6 = for (case _ @ <div >empty</div ><- Seq (xml)) yield ()
53
+ val auxiliary7 = for (case _ @ <div >empty</div ><- Seq (xml)) yield ()
54
+ // Pattern match with if guard.
55
+ // Note: This passes in Scala 2.12.18 and 2.13.12 too.
56
+ val auxiliary8 = for (case _ @ <foo >FooBar </foo > <- Seq (xml) if true )
57
+ yield ()
58
+ // Note: These pass in Scala 2.12.18 and 2.13.12.
59
+ val auxiliary9 = for (case _ @ <foo >FooBar </foo ><- Seq (xml) if true )
60
+ yield ()
61
+ val auxiliary10 = for (case _ @ <foo >FooBar </foo ><- Seq (xml) if true )
62
+ yield ()
63
+
64
+ }
65
+
66
+ }
67
+
68
+ package scala .xml {
69
+ type MetaData = AnyRef
70
+
71
+ class UnprefixedAttribute (
72
+ val key : String ,
73
+ val value : Text ,
74
+ next1 : MetaData
75
+ ) extends MetaData
76
+
77
+ trait NamespaceBinding
78
+ object TopScope extends NamespaceBinding
79
+ object Null
80
+ abstract class Node {
81
+ def label : String
82
+ def child : Seq [Node ]
83
+ override def toString = label + child.mkString
84
+ }
85
+
86
+ class Elem (prefix : String , val label : String , attributes1 : MetaData , scope : NamespaceBinding , minimizeEmpty : Boolean , val child : Node * ) extends Node
87
+ object Elem {
88
+ def unapply (e: Elem ): Option [(String ,String ,Any ,Text ,Any )] = Some ((" dummy" ," dummy" ,null ,null ,null ))
89
+ }
90
+ class NodeBuffer extends Seq [Node ] {
91
+ val nodes = scala.collection.mutable.ArrayBuffer .empty[Node ]
92
+ def &+ (o : Any ): NodeBuffer = o match {
93
+ case n : Node => nodes.addOne(n) ; this
94
+ case t : Text => nodes.addOne(Atom (t)) ; this
95
+ }
96
+ // Members declared in scala.collection.IterableOnce
97
+ def iterator : Iterator [scala.xml.Node ] = nodes.iterator
98
+ // Members declared in scala.collection.SeqOps
99
+ def apply (i : Int ): scala.xml.Node = nodes(i)
100
+ def length : Int = nodes.length
101
+ }
102
+ case class Text (text : String )
103
+ case class Atom (t : Text ) extends Node {
104
+ def label = t.text
105
+ def child = Nil
106
+ }
107
+ }
0 commit comments