Skip to content

Commit d728608

Browse files
committed
update to Dotty 0.18.1 Nightly
1 parent 54f4218 commit d728608

File tree

12 files changed

+151
-36
lines changed

12 files changed

+151
-36
lines changed

.circleci/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ workflows:
8484
- scala_job:
8585
name: dotty
8686
java_version: jdk8
87-
scala_version: 0.17.0-RC1
87+
scala_version: 0.18.1-bin-20190826-26217ce-NIGHTLY
8888
- scala_job:
8989
name: jdk11_2.12.8
9090
java_version: jdk11
@@ -96,7 +96,7 @@ workflows:
9696
- scala_job:
9797
name: jdk11_dotty
9898
java_version: jdk11
99-
scala_version: 0.17.0-RC1
99+
scala_version: 0.18.1-bin-20190826-26217ce-NIGHTLY
100100
- scalajs_job:
101101
name: sjs0.6_2.12
102102
scala_version: 2.12.8

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ language: scala
33
scala:
44
- 2.12.8
55
- 2.13.0
6-
- 0.17.0-RC1
6+
- 0.18.1-bin-20190826-26217ce-NIGHTLY
77

88
env:
99
global:
@@ -22,9 +22,9 @@ env:
2222

2323
matrix:
2424
exclude:
25-
- scala: 0.17.0-RC1
25+
- scala: 0.18.1-bin-20190826-26217ce-NIGHTLY
2626
env: SCALAJS_VERSION=0.6.28 ADOPTOPENJDK=8
27-
- scala: 0.17.0-RC1
27+
- scala: 0.18.1-bin-20190826-26217ce-NIGHTLY
2828
env: SCALAJS_VERSION=1.0.0-M8 ADOPTOPENJDK=8
2929

3030
before_install:

build.sbt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ lazy val configSettings: Seq[Setting[_]] = Seq(
1010
val sv = scalaVersion.value
1111
Seq(
1212
CrossVersion.partialVersion(sv) match {
13-
case Some((2, 13)) => file(dir.getPath ++ "-2.13+")
14-
case _ => file(dir.getPath ++ "-2.13-")
13+
case Some((2, 13)) => file(dir.getPath ++ "-2.13+")
14+
case Some((0, v)) if v >= 18 => file(dir.getPath ++ "-2.13+")
15+
case _ => file(dir.getPath ++ "-2.13-")
1516
},
1617
CrossVersion.partialVersion(sv) match {
1718
case Some((2, _)) => file(dir.getPath ++ "-2.x")
@@ -30,7 +31,7 @@ lazy val xml = crossProject(JSPlatform, JVMPlatform)
3031
.settings(scalaModuleSettings)
3132
.jvmSettings(scalaModuleSettingsJVM)
3233
.jvmSettings(
33-
crossScalaVersions += "0.17.0-RC1"
34+
crossScalaVersions += "0.18.1-bin-20190826-26217ce-NIGHTLY"
3435
)
3536
.settings(
3637
name := "scala-xml",

jvm/src/test/scala/scala/xml/ReuseNodesTest.scala

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package scala.xml
22

3+
import language.implicitConversions
4+
35
import scala.xml.transform._
46
import scala.collection.Seq
57
import org.junit.Assert.assertSame
@@ -9,19 +11,19 @@ import org.junit.experimental.theories.DataPoints
911
import org.junit.runner.RunWith
1012
/**
1113
* This test verifies that after the transform, the resultant xml node
12-
* uses as many old nodes as possible.
13-
*
14-
* Three transformers class for case -
15-
* One for original, one for modified, and one proposed which shows
14+
* uses as many old nodes as possible.
15+
*
16+
* Three transformers class for case -
17+
* One for original, one for modified, and one proposed which shows
1618
* all are equivalent when it comes to reusing as many nodes as possible
1719
*/
1820
object ReuseNodesTest {
19-
21+
2022
class OriginalTranformr(rules: RewriteRule*) extends RuleTransformer(rules:_*) {
2123
override def transform(ns: Seq[Node]): Seq[Node] = {
2224
val xs = ns.toStream map transform
2325
val (xs1, xs2) = xs zip ns span { case (x, n) => unchanged(n, x) }
24-
26+
2527
if (xs2.isEmpty) ns
2628
else (xs1 map (_._2)) ++ xs2.head._1 ++ transform(ns drop (xs1.length + 1))
2729
}
@@ -31,7 +33,7 @@ object ReuseNodesTest {
3133
class ModifiedTranformr(rules: RewriteRule*) extends RuleTransformer(rules:_*) {
3234
override def transform(ns: Seq[Node]): Seq[Node] = {
3335
val changed = ns flatMap transform
34-
36+
3537
if (changed.length != ns.length || changed.zip(ns).exists(p => p._1 != p._2)) changed
3638
else ns
3739
}
@@ -42,13 +44,13 @@ object ReuseNodesTest {
4244
override def transform(ns: Seq[Node]): Seq[Node] = {
4345
val xs = ns.toStream map transform
4446
val (xs1, xs2) = xs zip ns span { case (x, n) => unchanged(n, x) }
45-
47+
4648
if (xs2.isEmpty) ns
4749
else (xs1 map (_._2)) ++ xs2.head._1 ++ transform(ns drop (xs1.length + 1))
4850
}
4951
override def transform(n:Node): Seq[Node] = super.transform(n)
5052
}
51-
53+
5254
def rewriteRule = new RewriteRule {
5355
override def transform(n: Node): NodeSeq = n match {
5456
case n if n.label == "change" => Elem(
@@ -57,7 +59,7 @@ object ReuseNodesTest {
5759
}
5860
}
5961

60-
@DataPoints
62+
@DataPoints
6163
def tranformers() = Array(
6264
new OriginalTranformr(rewriteRule),
6365
new ModifiedTranformr(rewriteRule),
@@ -66,34 +68,34 @@ object ReuseNodesTest {
6668

6769
@RunWith(classOf[Theories])
6870
class ReuseNodesTest {
69-
71+
7072
@Theory
71-
def transformReferentialEquality(rt:RuleTransformer) = {
73+
def transformReferentialEquality(rt:RuleTransformer) = {
7274
val original = <p><lost/></p>
7375
val tranformed = rt.transform(original)
7476
assertSame(original, tranformed)
7577
}
76-
78+
7779
@Theory
78-
def transformReferentialEqualityOnly(rt:RuleTransformer) = {
80+
def transformReferentialEqualityOnly(rt:RuleTransformer) = {
7981
val original = <changed><change><lost/><a><b><c/></b></a></change><a><b><c/></b></a></changed>
8082
val transformed = rt.transform(original)
8183
recursiveAssert(original,transformed)
8284
}
83-
85+
8486
def recursiveAssert(original:Seq[Node], transformed:Seq[Node]):Unit = {
85-
original zip transformed foreach {
86-
case (x, y) => recursiveAssert(x, y)
87+
original zip transformed foreach {
88+
case (x, y) => recursiveAssert(x, y)
8789
}
8890
}
89-
91+
9092
def recursiveAssert(original:Node, transformed:Node):Unit = {
91-
transformed.label match {
93+
transformed.label match {
9294
case "changed" => // do nothing expect this node to be changed
9395
recursiveAssert(original.child,transformed.child)
9496
case _ => {
9597
assertSame(original, transformed)
96-
// No need to check for children, node being immuatable
98+
// No need to check for children, node being immuatable
9799
// children can't be different if parents are referentially equal
98100
}
99101
}

shared/src/main/scala/scala/xml/dtd/impl/Base.scala renamed to shared/src/main/scala-2.x/scala/xml/dtd/impl/Base.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@ private[dtd] abstract class Base {
6262
final val isNullable = r1.isNullable
6363
def r = r1
6464
}
65-
}
65+
}

shared/src/main/scala/scala/xml/dtd/impl/PointedHedgeExp.scala renamed to shared/src/main/scala-2.x/scala/xml/dtd/impl/PointedHedgeExp.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ private[dtd] abstract class PointedHedgeExp extends Base {
3232
final val isNullable = false
3333
}
3434

35-
}
35+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/* __ *\
2+
** ________ ___ / / ___ Scala API **
3+
** / __/ __// _ | / / / _ | (c) 2003-2019, LAMP/EPFL **
4+
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
5+
** /____/\___/_/ |_/____/_/ | | **
6+
** |/ **
7+
\* */
8+
9+
package scala
10+
package xml.dtd.impl
11+
12+
import scala.annotation.threadUnsafe
13+
14+
/**
15+
* Basic regular expressions.
16+
*
17+
* @author Burak Emir
18+
*/
19+
20+
@deprecated("This class will be removed", "2.10.0")
21+
private[dtd] abstract class Base {
22+
type _regexpT <: RegExp
23+
24+
abstract class RegExp {
25+
// dotty can not override non-lazy val with a lazy val, but an abstract lazy val can not exist in Scala 2
26+
lazy val isNullable: Boolean
27+
}
28+
29+
object Alt {
30+
/** `Alt( R,R,R* )`. */
31+
def apply(rs: _regexpT*) =
32+
if (rs.size < 2) throw new SyntaxError("need at least 2 branches in Alt")
33+
else new Alt(rs: _*)
34+
// Can't enforce that statically without changing the interface
35+
// def apply(r1: _regexpT, r2: _regexpT, rs: _regexpT*) = new Alt(Seq(r1, r2) ++ rs: _*)
36+
def unapplySeq(x: Alt) = Some(x.rs)
37+
}
38+
39+
class Alt private (val rs: _regexpT*) extends RegExp {
40+
@threadUnsafe final lazy val isNullable = rs exists (_.isNullable)
41+
}
42+
43+
object Sequ {
44+
/** Sequ( R,R* ) */
45+
def apply(rs: _regexpT*) = if (rs.isEmpty) Eps else new Sequ(rs: _*)
46+
def unapplySeq(x: Sequ) = Some(x.rs)
47+
}
48+
49+
class Sequ private (val rs: _regexpT*) extends RegExp {
50+
@threadUnsafe final lazy val isNullable = rs forall (_.isNullable)
51+
}
52+
53+
case class Star(r: _regexpT) extends RegExp {
54+
final lazy val isNullable = true
55+
}
56+
57+
// The empty Sequ.
58+
case object Eps extends RegExp {
59+
final lazy val isNullable = true
60+
override def toString() = "Eps"
61+
}
62+
63+
/** this class can be used to add meta information to regexps. */
64+
class Meta(r1: _regexpT) extends RegExp {
65+
@threadUnsafe final lazy val isNullable = r1.isNullable
66+
def r = r1
67+
}
68+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/* __ *\
2+
** ________ ___ / / ___ Scala API **
3+
** / __/ __// _ | / / / _ | (c) 2003-2019, LAMP/EPFL **
4+
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
5+
** /____/\___/_/ |_/____/_/ | | **
6+
** |/ **
7+
\* */
8+
9+
package scala
10+
package xml.dtd.impl
11+
12+
import scala.annotation.threadUnsafe
13+
14+
/**
15+
* Pointed regular hedge expressions, a useful subclass of regular hedge expressions.
16+
*
17+
* @author Burak Emir
18+
*/
19+
@deprecated("This class will be removed", "2.10.0")
20+
private[dtd] abstract class PointedHedgeExp extends Base {
21+
22+
type _regexpT <: RegExp
23+
type _labelT
24+
25+
case class Node(label: _labelT, r: _regexpT) extends RegExp {
26+
@threadUnsafe final lazy val isNullable = false
27+
}
28+
29+
case class TopIter(r1: _regexpT, r2: _regexpT) extends RegExp {
30+
@threadUnsafe final lazy val isNullable = r1.isNullable && r2.isNullable //?
31+
}
32+
33+
case object Point extends RegExp {
34+
@threadUnsafe final lazy val isNullable = false
35+
}
36+
37+
}

shared/src/main/scala/scala/xml/dtd/Scanner.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ class Scanner extends Tokens with parsing.TokenTests {
8181

8282
final def name = {
8383
val sb = new StringBuilder()
84-
do { sb.append(c); next() } while (isNameChar(c))
84+
while ({
85+
sb.append(c)
86+
next()
87+
isNameChar(c)
88+
}) ()
8589
value = sb.toString()
8690
NAME
8791
}

shared/src/main/scala/scala/xml/dtd/impl/WordExp.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,4 @@ private[dtd] abstract class WordExp extends Base {
5353
final lazy val isNullable = false
5454
var pos = -1
5555
}
56-
}
56+
}

0 commit comments

Comments
 (0)