From ad635975e68dbf4c0a4370c94b3c5069552238d6 Mon Sep 17 00:00:00 2001 From: Antoine Gourlay Date: Tue, 20 Sep 2016 12:33:13 +0200 Subject: [PATCH] [backport] Scala.js support for 1.0.x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit backports the commit below, with two caveats: - the fix in #68 doesn't work with Scala.js, so it is only enabled on the JVM for now - the scalaVersion/crossScalaVersion madness breaks the sbt build in 1.0.x (it didn't in master for some reason), so the second backport commit below had to be squashed with this one [backport] Add support for Scala.js, with cross-compilation. Scala versions were upgraded to 2.11.7 and 2.12.0-M3. 2.12 is only used when running the build on JDK8 or later. JavaTokenParsers.identifier was rewritten not to use a regexp, but rather primitive parsers and Character.isJavaIdentifier{Start,Part}. The regexp-based implementation relies on Java-specific character ranges. JavaTokenParsers.stringLiteral was slightly adapted with an expansion of `\p{Cntrl}` into `[\x00-\x1F\x7F]`. The former character range is Java-specific. We also removed an invalid (and useless) `+` at the end of the regexp. The test t4929.scala is JVM-only. (Author: Sébastien Doeraene ) (cherry picked from commit 98737a23dbdc2ad4bf0fcb59dbe576dcd695fcbb) --- [backport] set Scala version in a more dbuild-friendly way having scalaVersion and crossScalaVersions set in different places was confusing dbuild needed to fix scala/community-builds#215 (Author: Seth Tisue ) (cherry picked from commit bde222c4249346f64f9ea058d5dcc2d41c634fda) --- build.sbt | 63 +++++++++++++------ .../util/parsing/input/PositionCache.scala | 14 +++++ .../util/parsing/input/PositionCache.scala | 17 +++++ .../scala/util/parsing/combinator/t4929.scala | 0 .../scala/util/parsing/combinator/t9010.scala | 0 project/plugins.sbt | 2 + .../combinator/ImplicitConversions.scala | 0 .../parsing/combinator/JavaTokenParsers.scala | 10 ++- .../parsing/combinator/PackratParsers.scala | 0 .../util/parsing/combinator/Parsers.scala | 0 .../parsing/combinator/RegexParsers.scala | 0 .../util/parsing/combinator/SubSequence.scala | 0 .../parsing/combinator/lexical/Lexical.scala | 0 .../parsing/combinator/lexical/Scanners.scala | 0 .../combinator/lexical/StdLexical.scala | 0 .../syntactical/StandardTokenParsers.scala | 0 .../syntactical/StdTokenParsers.scala | 0 .../combinator/syntactical/TokenParsers.scala | 0 .../parsing/combinator/token/StdTokens.scala | 0 .../parsing/combinator/token/Tokens.scala | 0 .../util/parsing/input/CharArrayReader.scala | 0 .../parsing/input/CharSequenceReader.scala | 0 .../scala/util/parsing/input/NoPosition.scala | 0 .../util/parsing/input/OffsetPosition.scala | 12 +--- .../util/parsing/input/PagedSeqReader.scala | 0 .../scala/util/parsing/input/Position.scala | 0 .../scala/util/parsing/input/Positional.scala | 0 .../scala/util/parsing/input/Reader.scala | 0 .../util/parsing/input/StreamReader.scala | 0 .../scala/scala/util/parsing/json/JSON.scala | 0 .../scala/scala/util/parsing/json/Lexer.scala | 0 .../scala/util/parsing/json/Parser.scala | 0 .../combinator/JavaTokenParsersTest.scala | 2 +- .../util/parsing/combinator/JsonTest.scala | 5 +- .../combinator/PackratParsersTest.scala | 0 .../parsing/combinator/RegexParsersTest.scala | 0 .../util/parsing/combinator/UnitTestIO.scala | 0 .../scala/util/parsing/combinator/gh45.scala | 0 .../scala/util/parsing/combinator/gh56.scala | 0 .../scala/util/parsing/combinator/t0700.scala | 0 .../scala/util/parsing/combinator/t1100.scala | 0 .../scala/util/parsing/combinator/t4138.scala | 0 .../scala/util/parsing/combinator/t5514.scala | 0 .../scala/util/parsing/combinator/t8879.scala | 0 44 files changed, 89 insertions(+), 36 deletions(-) create mode 100644 js/src/main/scala/scala/util/parsing/input/PositionCache.scala create mode 100644 jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala rename {src => jvm/src}/test/scala/scala/util/parsing/combinator/t4929.scala (100%) rename {src => jvm/src}/test/scala/scala/util/parsing/combinator/t9010.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala (88%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/PackratParsers.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/Parsers.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/RegexParsers.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/SubSequence.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/token/StdTokens.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/combinator/token/Tokens.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/CharArrayReader.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/CharSequenceReader.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/NoPosition.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/OffsetPosition.scala (89%) rename {src => shared/src}/main/scala/scala/util/parsing/input/PagedSeqReader.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/Position.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/Positional.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/Reader.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/input/StreamReader.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/json/JSON.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/json/Lexer.scala (100%) rename {src => shared/src}/main/scala/scala/util/parsing/json/Parser.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala (96%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/JsonTest.scala (98%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/UnitTestIO.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/gh45.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/gh56.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/t0700.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/t1100.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/t4138.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/t5514.scala (100%) rename {src => shared/src}/test/scala/scala/util/parsing/combinator/t8879.scala (100%) diff --git a/build.sbt b/build.sbt index 0b709dbe..61cdd133 100644 --- a/build.sbt +++ b/build.sbt @@ -1,10 +1,4 @@ -import com.typesafe.tools.mima.plugin.{MimaPlugin, MimaKeys} - -scalaModuleSettings - -name := "scala-parser-combinators" - -version := "1.0.5-SNAPSHOT" +scalaVersion in ThisBuild := crossScalaVersions.value.head crossScalaVersions in ThisBuild := { val javaVersion = System.getProperty("java.version") @@ -16,16 +10,45 @@ crossScalaVersions in ThisBuild := { Seq("2.11.7", "2.12.0-M3") } -// important!! must come here (why?) -scalaModuleOsgiSettings - -OsgiKeys.exportPackage := Seq(s"scala.util.parsing.*;version=${version.value}") - -// needed to fix classloader issues (see scala-xml#20) -fork in Test := true - -libraryDependencies += "junit" % "junit" % "4.11" % "test" - -libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test" - -mimaPreviousVersion := Some("1.0.2") +lazy val `scala-parser-combinators` = crossProject.in(file(".")). + settings(scalaModuleSettings: _*). + settings( + name := "scala-parser-combinators-root" + ). + jvmSettings( + // Mima uses the name of the jvm project in the artifactId + // when resolving previous versions (so no "-jvm" project) + name := "scala-parser-combinators" + ). + jsSettings( + name := "scala-parser-combinators-js" + ). + settings( + moduleName := "scala-parser-combinators", + version := "1.0.5-SNAPSHOT" + ). + jvmSettings( + // important!! must come here (why?) + scalaModuleOsgiSettings: _* + ). + jvmSettings( + OsgiKeys.exportPackage := Seq(s"scala.util.parsing.*;version=${version.value}"), + + // needed to fix classloader issues (see scala-xml#20) + fork in Test := true + ). + jsSettings( + // Scala.js cannot run forked tests + fork in Test := false + ). + jsConfigure(_.enablePlugins(ScalaJSJUnitPlugin)). + jvmSettings( + libraryDependencies += "junit" % "junit" % "4.11" % "test", + libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test" + ). + jvmSettings( + mimaPreviousVersion := Some("1.0.4") + ) + +lazy val `scala-parser-combinatorsJVM` = `scala-parser-combinators`.jvm +lazy val `scala-parser-combinatorsJS` = `scala-parser-combinators`.js diff --git a/js/src/main/scala/scala/util/parsing/input/PositionCache.scala b/js/src/main/scala/scala/util/parsing/input/PositionCache.scala new file mode 100644 index 00000000..ff9f144f --- /dev/null +++ b/js/src/main/scala/scala/util/parsing/input/PositionCache.scala @@ -0,0 +1,14 @@ +package scala.util.parsing.input + +import java.lang.CharSequence +import java.util.{AbstractMap, Collections} + +private[input] trait PositionCache { + private[input] lazy val indexCache: java.util.Map[CharSequence,Array[Int]] = new AbstractMap[CharSequence, Array[Int]] { + + override def entrySet() = Collections.emptySet() + + // the /dev/null of Maps + override def put(ch: CharSequence, a: Array[Int]) = null + } +} diff --git a/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala b/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala new file mode 100644 index 00000000..84b1edfb --- /dev/null +++ b/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala @@ -0,0 +1,17 @@ +package scala.util.parsing.input + +import java.lang.{CharSequence, ThreadLocal} +import java.util.WeakHashMap + +/** + * @author Tomáš Janoušek + */ +private[input] trait PositionCache { + private lazy val indexCacheTL = + // not DynamicVariable as that would share the map from parent to child :-( + new ThreadLocal[java.util.Map[CharSequence, Array[Int]]] { + override def initialValue = new WeakHashMap[CharSequence, Array[Int]] + } + + private[input] def indexCache = indexCacheTL.get +} diff --git a/src/test/scala/scala/util/parsing/combinator/t4929.scala b/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t4929.scala rename to jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala diff --git a/src/test/scala/scala/util/parsing/combinator/t9010.scala b/jvm/src/test/scala/scala/util/parsing/combinator/t9010.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t9010.scala rename to jvm/src/test/scala/scala/util/parsing/combinator/t9010.scala diff --git a/project/plugins.sbt b/project/plugins.sbt index 65dea32c..8fef081e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1 +1,3 @@ addSbtPlugin("org.scala-lang.modules" % "scala-module-plugin" % "1.0.4") + +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.6") diff --git a/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala b/shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala rename to shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala diff --git a/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala similarity index 88% rename from src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala index 1e6b1624..12bb4838 100644 --- a/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala @@ -26,8 +26,12 @@ trait JavaTokenParsers extends RegexParsers { * The Java Language Spec. * Generally, this means a letter, followed by zero or more letters or numbers. */ - def ident: Parser[String] = - """\p{javaJavaIdentifierStart}\p{javaJavaIdentifierPart}*""".r + def ident: Parser[String] = ( + "" ~> // handle whitespace + rep1(acceptIf(Character.isJavaIdentifierStart)("identifier expected but `" + _ + "' found"), + elem("identifier part", Character.isJavaIdentifierPart(_: Char))) ^^ (_.mkString) + ) + /** An integer, without sign or with a negative sign. */ def wholeNumber: Parser[String] = """-?\d+""".r @@ -49,7 +53,7 @@ trait JavaTokenParsers extends RegexParsers { */ @migration("`stringLiteral` allows escaping single and double quotes, but not forward slashes any longer.", "2.10.0") def stringLiteral: Parser[String] = - ("\""+"""([^"\p{Cntrl}\\]|\\[\\'"bfnrt]|\\u[a-fA-F0-9]{4})*+"""+"\"").r + ("\""+"""([^"\x00-\x1F\x7F\\]|\\[\\'"bfnrt]|\\u[a-fA-F0-9]{4})*"""+"\"").r /** A number following the rules of `decimalNumber`, with the following * optional additions: * diff --git a/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/PackratParsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala diff --git a/src/main/scala/scala/util/parsing/combinator/Parsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/Parsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala diff --git a/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/RegexParsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala diff --git a/src/main/scala/scala/util/parsing/combinator/SubSequence.scala b/shared/src/main/scala/scala/util/parsing/combinator/SubSequence.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/SubSequence.scala rename to shared/src/main/scala/scala/util/parsing/combinator/SubSequence.scala diff --git a/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala b/shared/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala rename to shared/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala diff --git a/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala b/shared/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala rename to shared/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala diff --git a/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala b/shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala rename to shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala diff --git a/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala diff --git a/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala diff --git a/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala rename to shared/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala diff --git a/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala b/shared/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala rename to shared/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala diff --git a/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala b/shared/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala similarity index 100% rename from src/main/scala/scala/util/parsing/combinator/token/Tokens.scala rename to shared/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala diff --git a/src/main/scala/scala/util/parsing/input/CharArrayReader.scala b/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/CharArrayReader.scala rename to shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala diff --git a/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala b/shared/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/CharSequenceReader.scala rename to shared/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala diff --git a/src/main/scala/scala/util/parsing/input/NoPosition.scala b/shared/src/main/scala/scala/util/parsing/input/NoPosition.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/NoPosition.scala rename to shared/src/main/scala/scala/util/parsing/input/NoPosition.scala diff --git a/src/main/scala/scala/util/parsing/input/OffsetPosition.scala b/shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala similarity index 89% rename from src/main/scala/scala/util/parsing/input/OffsetPosition.scala rename to shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala index bbaa5e00..c69fc4d9 100644 --- a/src/main/scala/scala/util/parsing/input/OffsetPosition.scala +++ b/shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala @@ -91,15 +91,5 @@ case class OffsetPosition(source: CharSequence, offset: Int) extends Position { } /** An object holding the index cache. - * - * @author Tomáš Janoušek */ -object OffsetPosition extends scala.runtime.AbstractFunction2[CharSequence,Int,OffsetPosition] { - private lazy val indexCacheTL = - // not DynamicVariable as that would share the map from parent to child :-( - new ThreadLocal[java.util.Map[CharSequence, Array[Int]]] { - override def initialValue = new WeakHashMap[CharSequence, Array[Int]] - } - - private def indexCache = indexCacheTL.get -} +object OffsetPosition extends scala.runtime.AbstractFunction2[CharSequence,Int,OffsetPosition] with PositionCache diff --git a/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala b/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/PagedSeqReader.scala rename to shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala diff --git a/src/main/scala/scala/util/parsing/input/Position.scala b/shared/src/main/scala/scala/util/parsing/input/Position.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/Position.scala rename to shared/src/main/scala/scala/util/parsing/input/Position.scala diff --git a/src/main/scala/scala/util/parsing/input/Positional.scala b/shared/src/main/scala/scala/util/parsing/input/Positional.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/Positional.scala rename to shared/src/main/scala/scala/util/parsing/input/Positional.scala diff --git a/src/main/scala/scala/util/parsing/input/Reader.scala b/shared/src/main/scala/scala/util/parsing/input/Reader.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/Reader.scala rename to shared/src/main/scala/scala/util/parsing/input/Reader.scala diff --git a/src/main/scala/scala/util/parsing/input/StreamReader.scala b/shared/src/main/scala/scala/util/parsing/input/StreamReader.scala similarity index 100% rename from src/main/scala/scala/util/parsing/input/StreamReader.scala rename to shared/src/main/scala/scala/util/parsing/input/StreamReader.scala diff --git a/src/main/scala/scala/util/parsing/json/JSON.scala b/shared/src/main/scala/scala/util/parsing/json/JSON.scala similarity index 100% rename from src/main/scala/scala/util/parsing/json/JSON.scala rename to shared/src/main/scala/scala/util/parsing/json/JSON.scala diff --git a/src/main/scala/scala/util/parsing/json/Lexer.scala b/shared/src/main/scala/scala/util/parsing/json/Lexer.scala similarity index 100% rename from src/main/scala/scala/util/parsing/json/Lexer.scala rename to shared/src/main/scala/scala/util/parsing/json/Lexer.scala diff --git a/src/main/scala/scala/util/parsing/json/Parser.scala b/shared/src/main/scala/scala/util/parsing/json/Parser.scala similarity index 100% rename from src/main/scala/scala/util/parsing/json/Parser.scala rename to shared/src/main/scala/scala/util/parsing/json/Parser.scala diff --git a/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala similarity index 96% rename from src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala rename to shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala index 28cf1ba7..9527feea 100644 --- a/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala @@ -97,7 +97,7 @@ class JavaTokenParsersTest { case Failure(message, next) => assertEquals(next.pos.line, 1) assertEquals(next.pos.column, 1) - assert(message.endsWith(s"regex `\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*' expected but `-' found")) + assert(message.endsWith(s"identifier expected but `-' found")) case _ => sys.error(parseResult.toString) } diff --git a/src/test/scala/scala/util/parsing/combinator/JsonTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala similarity index 98% rename from src/test/scala/scala/util/parsing/combinator/JsonTest.scala rename to shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala index cb24a334..84e15bfb 100644 --- a/src/test/scala/scala/util/parsing/combinator/JsonTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala @@ -120,7 +120,10 @@ class JsonTest { assertEquals("{\"name\" : {\"name1\" : \"va1ue1\", \"name2\" : \"va1ue2\"}}", JSONObject(Map("name" -> JSONObject(TreeMap("name1" -> "va1ue1", "name2" -> "va1ue2")))).toString()) - assertEquals("[4.0, 1.0, 3.0, 2.0, 6.0, 5.0, 8.0, 7.0]", JSONArray(List[Double](4,1,3,2,6,5,8,7)).toString()) + val expected = + if (1.0.toString == "1") "[4, 1, 3, 2, 6, 5, 8, 7]" + else "[4.0, 1.0, 3.0, 2.0, 6.0, 5.0, 8.0, 7.0]" + assertEquals(expected, JSONArray(List[Double](4,1,3,2,6,5,8,7)).toString()) } // A test method that escapes all characters in strings diff --git a/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala rename to shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala diff --git a/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala rename to shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala diff --git a/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala b/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala rename to shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala diff --git a/src/test/scala/scala/util/parsing/combinator/gh45.scala b/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/gh45.scala rename to shared/src/test/scala/scala/util/parsing/combinator/gh45.scala diff --git a/src/test/scala/scala/util/parsing/combinator/gh56.scala b/shared/src/test/scala/scala/util/parsing/combinator/gh56.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/gh56.scala rename to shared/src/test/scala/scala/util/parsing/combinator/gh56.scala diff --git a/src/test/scala/scala/util/parsing/combinator/t0700.scala b/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t0700.scala rename to shared/src/test/scala/scala/util/parsing/combinator/t0700.scala diff --git a/src/test/scala/scala/util/parsing/combinator/t1100.scala b/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t1100.scala rename to shared/src/test/scala/scala/util/parsing/combinator/t1100.scala diff --git a/src/test/scala/scala/util/parsing/combinator/t4138.scala b/shared/src/test/scala/scala/util/parsing/combinator/t4138.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t4138.scala rename to shared/src/test/scala/scala/util/parsing/combinator/t4138.scala diff --git a/src/test/scala/scala/util/parsing/combinator/t5514.scala b/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t5514.scala rename to shared/src/test/scala/scala/util/parsing/combinator/t5514.scala diff --git a/src/test/scala/scala/util/parsing/combinator/t8879.scala b/shared/src/test/scala/scala/util/parsing/combinator/t8879.scala similarity index 100% rename from src/test/scala/scala/util/parsing/combinator/t8879.scala rename to shared/src/test/scala/scala/util/parsing/combinator/t8879.scala