Skip to content

Commit e26d523

Browse files
authored
Merge pull request #270 from Philippus/add-dotty
Add dotty to cross-build
2 parents 185869a + b560430 commit e26d523

26 files changed

+70
-27
lines changed

.travis.yml

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import: scala/scala-dev:travis/default.yml
55
language: scala
66

77
scala:
8+
- 0.23.0-RC1
89
- 2.11.12
910
- 2.12.10
1011
- 2.13.1
@@ -16,6 +17,11 @@ env:
1617
- ADOPTOPENJDK=11 SCALAJS_VERSION=
1718

1819
matrix:
20+
exclude:
21+
- scala: 0.23.0-RC1
22+
env: ADOPTOPENJDK=8 SCALAJS_VERSION=0.6.32
23+
- scala: 0.23.0-RC1
24+
env: ADOPTOPENJDK=8 SCALAJS_VERSION=1.0.1
1925
include:
2026
- scala: 2.11.12
2127
env: ADOPTOPENJDK=8 SCALANATIVE_VERSION=0.3.9

build.sbt

+18-11
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,27 @@ lazy val parserCombinators = crossProject(JVMPlatform, JSPlatform, NativePlatfor
1111
apiMappings += (scalaInstance.value.libraryJar ->
1212
url(s"https://www.scala-lang.org/api/${scalaVersion.value}/")),
1313

14-
scalacOptions in (Compile, doc) ++= Seq(
15-
"-diagrams",
16-
"-doc-source-url",
17-
s"https://github.com/scala/scala-parser-combinators/tree/v${version.value}€{FILE_PATH}.scala",
18-
"-sourcepath",
19-
(baseDirectory in LocalRootProject).value.absolutePath,
20-
"-doc-title",
21-
"Scala Parser Combinators",
22-
"-doc-version",
23-
version.value
24-
),
14+
scalacOptions in (Compile, doc) ++= {
15+
if (isDotty.value)
16+
Seq("-language:Scala2")
17+
else
18+
Seq(
19+
"-diagrams",
20+
"-doc-source-url",
21+
s"https://github.com/scala/scala-parser-combinators/tree/v${version.value}€{FILE_PATH}.scala",
22+
"-sourcepath",
23+
(baseDirectory in LocalRootProject).value.absolutePath,
24+
"-doc-title",
25+
"Scala Parser Combinators",
26+
"-doc-version",
27+
version.value
28+
)
29+
},
2530
unmanagedSourceDirectories in Compile ++= {
2631
(unmanagedSourceDirectories in Compile).value.map { dir =>
2732
CrossVersion.partialVersion(scalaVersion.value) match {
2833
case Some((2, 13)) => file(dir.getPath ++ "-2.13+")
34+
case Some((0, _)) => file(dir.getPath ++ "-2.13+")
2935
case _ => file(dir.getPath ++ "-2.13-")
3036
}
3137
}
@@ -37,6 +43,7 @@ lazy val parserCombinators = crossProject(JVMPlatform, JSPlatform, NativePlatfor
3743
libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % Test
3844
)
3945
.jsSettings(
46+
crossScalaVersions -= "0.23.0-RC1",
4047
// Scala.js cannot run forked tests
4148
fork in Test := false
4249
)

project/plugins.sbt

+2
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion)
1111

1212
addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.0.0")
1313
addSbtPlugin("org.scala-native" % "sbt-scala-native" % scalaNativeVersion)
14+
15+
addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.4.0")

shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala

+5-5
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@ import scala.language.implicitConversions
3333
* @author Adriaan Moors
3434
*/
3535
trait ImplicitConversions { self: Parsers =>
36-
implicit def flatten2[A, B, C] (f: (A, B) => C) =
36+
implicit def flatten2[A, B, C] (f: (A, B) => C): A ~ B => C =
3737
(p: ~[A, B]) => p match {case a ~ b => f(a, b)}
38-
implicit def flatten3[A, B, C, D] (f: (A, B, C) => D) =
38+
implicit def flatten3[A, B, C, D] (f: (A, B, C) => D): A ~ B ~ C => D =
3939
(p: ~[~[A, B], C]) => p match {case a ~ b ~ c => f(a, b, c)}
40-
implicit def flatten4[A, B, C, D, E] (f: (A, B, C, D) => E) =
40+
implicit def flatten4[A, B, C, D, E] (f: (A, B, C, D) => E): A ~ B ~ C ~ D => E =
4141
(p: ~[~[~[A, B], C], D]) => p match {case a ~ b ~ c ~ d => f(a, b, c, d)}
42-
implicit def flatten5[A, B, C, D, E, F](f: (A, B, C, D, E) => F) =
42+
implicit def flatten5[A, B, C, D, E, F](f: (A, B, C, D, E) => F): A ~ B ~ C ~ D ~ E => F =
4343
(p: ~[~[~[~[A, B], C], D], E]) => p match {case a ~ b ~ c ~ d ~ e=> f(a, b, c, d, e)}
44-
implicit def headOptionTailToFunList[A, T] (f: List[A] => T)=
44+
implicit def headOptionTailToFunList[A, T] (f: List[A] => T): A ~ Option[List[A]] => T =
4545
(p: ~[A, Option[List[A]]]) => f(p._1 :: (p._2 match { case Some(xs) => xs case None => Nil}))
4646
}

shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ package scala
1414
package util.parsing.combinator
1515

1616
import scala.annotation.migration
17+
import scala.language.implicitConversions
1718

1819
/** `JavaTokenParsers` differs from [[scala.util.parsing.combinator.RegexParsers]]
1920
* by adding the following definitions:

shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala

+4-2
Original file line numberDiff line numberDiff line change
@@ -663,8 +663,10 @@ trait Parsers {
663663
* @param es the list of expected elements
664664
* @return a Parser that recognizes a specified list of elements
665665
*/
666-
def acceptSeq[ES](es: ES)(implicit f: ES => Iterable[Elem]): Parser[List[Elem]] =
667-
es.foldRight[Parser[List[Elem]]](success(Nil)){(x, pxs) => accept(x) ~ pxs ^^ mkList}
666+
def acceptSeq[ES](es: ES)(implicit f: ES => Iterable[Elem]): Parser[List[Elem]] = {
667+
f(es) // explicit conversion for dotty
668+
.foldRight[Parser[List[Elem]]](success(Nil)){(x, pxs) => accept(x) ~ pxs ^^ mkList}
669+
}
668670

669671
/** A parser that always fails.
670672
*

shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package lexical
1818
import token._
1919
import input.CharArrayReader.EofCh
2020
import scala.collection.mutable
21+
import scala.language.implicitConversions
2122

2223
/** This component provides a standard lexical parser for a simple,
2324
* [[http://scala-lang.org Scala]]-like language. It parses keywords and

shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import scala.language.implicitConversions
2525
*/
2626
class StandardTokenParsers extends StdTokenParsers {
2727
type Tokens = StdTokens
28-
val lexical = new StdLexical
28+
val lexical: StdLexical = new StdLexical() // type annotation added for dotty
2929

3030
//an implicit keyword function that gives a warning when a given word is not in the reserved/delimiters list
3131
override implicit def keyword(chars : String): Parser[String] =

shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.util.parsing.combinator
22

3+
import scala.language.implicitConversions
34
import scala.util.parsing.input.CharArrayReader
45

56
import org.junit.Test

shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala

+14-7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import org.junit.Test
44
import org.junit.Assert.assertEquals
55
import org.junit.Assert.assertTrue
66

7+
import scala.language.implicitConversions
78
import scala.util.parsing.combinator.syntactical.StandardTokenParsers
89

910
class PackratParsersTest {
@@ -16,6 +17,8 @@ class PackratParsersTest {
1617
def extractResult(r : ParseResult[Int]): Int = r match {
1718
case Success(a,_) => a
1819
case NoSuccess(a,_) => sys.error(a)
20+
case Failure(a, _) => sys.error(a)
21+
case Error(a, _) => sys.error(a)
1922
}
2023
def check(expected: Int, expr: String): Unit = {
2124
val parseResult = head(new lexical.Scanner(expr))
@@ -70,6 +73,8 @@ class PackratParsersTest {
7073
def extractResult(r : ParseResult[Int]): Int = r match {
7174
case Success(a,_) => a
7275
case NoSuccess(a,_) => sys.error(a)
76+
case Failure(a, _) => sys.error(a)
77+
case Error(a, _) => sys.error(a)
7378
}
7479
def check(expected: Int, expr: String): Unit = {
7580
val parseResult = head(new lexical.Scanner(expr))
@@ -93,6 +98,8 @@ class PackratParsersTest {
9398
def extractResult(r: ParseResult[AnBnCnResult]): AnBnCnResult = r match {
9499
case Success(a,_) => a
95100
case NoSuccess(a,_) => sys.error(a)
101+
case Failure(a, _) => sys.error(a)
102+
case Error(a, _) => sys.error(a)
96103
}
97104
def threeLists(as: List[Symbol], bs: List[Symbol], cs: List[Symbol]): AnBnCnResult = {
98105
val as1 = as.map(_.name)
@@ -139,14 +146,14 @@ private object grammars1 extends StandardTokenParsers with PackratParsers {
139146
*/
140147

141148

142-
val term: PackratParser[Int] = (term~("+"~>fact) ^^ {case x~y => x+y}
143-
|term~("-"~>fact) ^^ {case x~y => x-y}
144-
|fact)
149+
val term: PackratParser[Int] = (term~("+"~>fact) ^^ {case x~y => x+y}
150+
|term~("-"~>fact) ^^ {case x~y => x-y}
151+
|fact)
145152

146-
val fact: PackratParser[Int] = (fact~("*"~>numericLit) ^^ {case x~y => x*y.toInt}
147-
|fact~("/"~>numericLit) ^^ {case x~y => x/y.toInt}
148-
|"("~>term<~")"
149-
|numericLit ^^ {_.toInt})
153+
val fact: PackratParser[Int] = (fact~("*"~>numericLit) ^^ {case x~y => x*y.toInt}
154+
|fact~("/"~>numericLit) ^^ {case x~y => x/y.toInt}
155+
|"("~>term<~")"
156+
|numericLit ^^ {_.toInt})
150157
}
151158

152159
private object grammars2 extends StandardTokenParsers with PackratParsers {

shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package scala.util.parsing.combinator
22

3+
import scala.language.implicitConversions
4+
35
import org.junit.Test
46
import org.junit.Assert.{ assertEquals, assertTrue }
57

shared/src/test/scala/scala/util/parsing/combinator/gh242.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import org.junit.Assert.assertEquals
22
import org.junit.Test
33

4+
import scala.language.implicitConversions
45
import scala.util.parsing.combinator.Parsers
56
import scala.util.parsing.input.CharSequenceReader
67

shared/src/test/scala/scala/util/parsing/combinator/gh29.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.util.parsing.combinator
22

33
import org.junit.Test
44
import org.junit.Assert.assertEquals
5+
import scala.language.implicitConversions
56

67
class gh29 {
78
object Foo extends JavaTokenParsers {

shared/src/test/scala/scala/util/parsing/combinator/gh45.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.util.parsing.combinator
22

3+
import scala.language.implicitConversions
34
import scala.util.parsing.input._
45

56
import org.junit.Test

shared/src/test/scala/scala/util/parsing/combinator/gh72.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import scala.language.implicitConversions
12
import scala.util.parsing.combinator.Parsers
23
import scala.util.parsing.input.CharSequenceReader
34

shared/src/test/scala/scala/util/parsing/combinator/t0700.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import java.io.{File,StringReader}
22

3+
import scala.language.implicitConversions
34
import scala.util.parsing.combinator.Parsers
45
import scala.util.parsing.input.{CharArrayReader, StreamReader}
56

shared/src/test/scala/scala/util/parsing/combinator/t1100.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class T1100 {
1212
def p1: Parser[Char] = accept('a') | err("errors are propagated")
1313
}
1414

15-
val expected = """[1.4] error: errors are propagated
15+
val expected = """[1.4] error: errors are propagated
1616
1717
aaab
1818
^"""

shared/src/test/scala/scala/util/parsing/combinator/t1229.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import scala.util.parsing.combinator.RegexParsers
22

33
import org.junit.Test
44
import org.junit.Assert.assertEquals
5+
import scala.language.implicitConversions
56

67
class t1229 extends RegexParsers {
78
val number = """0|[1-9]\d*""".r ^^ { _.toInt }

shared/src/test/scala/scala/util/parsing/combinator/t3212.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.util.parsing.combinator
22

33
import org.junit.Test
44
import org.junit.Assert.assertEquals
5+
import scala.language.implicitConversions
56

67
class t3212 extends RegexParsers {
78

shared/src/test/scala/scala/util/parsing/combinator/t5514.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import scala.language.implicitConversions
12
import scala.util.parsing.combinator.Parsers
23
import scala.util.parsing.input.Reader
34
import scala.util.parsing.input.Position

shared/src/test/scala/scala/util/parsing/combinator/t5669.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.util.parsing.combinator
22

3+
import scala.language.implicitConversions
34
import scala.util.parsing.input.OffsetPosition
45

56
import org.junit.Test

shared/src/test/scala/scala/util/parsing/combinator/t6067.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import scala.util.parsing.combinator._
22

33
import org.junit.Test
44
import org.junit.Assert.assertEquals
5+
import scala.language.implicitConversions
56

67
class t6067 extends RegexParsers {
78
object TestParser extends RegexParsers {

shared/src/test/scala/scala/util/parsing/combinator/t6464.scala

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import scala.language.implicitConversions
12
import scala.util.parsing.input.CharSequenceReader
23
import scala.util.parsing.combinator.RegexParsers
34

shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.util.parsing.input
22

33
import org.junit.Test
44
import org.junit.Assert.assertEquals
5+
import scala.language.implicitConversions
56

67
class OffsetPositionTest {
78
@Test

shared/src/test/scala/scala/util/parsing/input/gh178.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.util.parsing.input
22

33
import org.junit.Assert.assertEquals
44
import org.junit.Test
5+
import scala.language.implicitConversions
56

67
class gh178 {
78

shared/src/test/scala/scala/util/parsing/input/gh64.scala

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.util.parsing.input
22

33
import org.junit.Assert._
44
import org.junit.Test
5+
import scala.language.implicitConversions
56

67
class gh64 {
78

0 commit comments

Comments
 (0)