From 751fd00c67c3752941fad74e9b75c16725be8ee2 Mon Sep 17 00:00:00 2001 From: Philippus Date: Mon, 15 Apr 2019 08:06:56 +0200 Subject: [PATCH 01/24] Add scala native to build matrix --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 52fe70d2..cd41abeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,11 @@ env: - SCALAJS_VERSION=0.6.27 - SCALAJS_VERSION=1.0.0-M7 +matrix: + include: + - env: SCALANATIVE_VERSION=0.3.8 + jdk: oraclejdk8 + script: admin/build.sh notifications: From ea5ec1ba27f496dd43761bf06718effbaaa6b136 Mon Sep 17 00:00:00 2001 From: Philippus Date: Thu, 16 May 2019 20:48:57 +0200 Subject: [PATCH 02/24] Update scala 2.13.0-RC1 to 2.13.0-RC2 --- .travis.yml | 2 +- build.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd41abeb..4e070b91 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ jdk: scala: - 2.11.12 - 2.12.8 - - 2.13.0-RC1 + - 2.13.0-RC2 env: global: diff --git a/build.sbt b/build.sbt index 1840c2bd..e4753b7b 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ import ScalaModulePlugin._ import sbtcrossproject.crossProject -crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0-RC1") +crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0-RC2") lazy val root = project.in(file(".")) .aggregate(`scala-parser-combinatorsJS`, `scala-parser-combinatorsJVM`, `scala-parser-combinatorsNative`) From ae2d4a3c81282b973ce174629e6ca1c269d4bafb Mon Sep 17 00:00:00 2001 From: Philippus Date: Thu, 16 May 2019 21:11:25 +0200 Subject: [PATCH 03/24] Use trusty --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 4e070b91..af260cfa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +dist: trusty language: scala jdk: - oraclejdk8 From 52de10a0da74838efedc5e049437fe5a5c165e8c Mon Sep 17 00:00:00 2001 From: Philippus Date: Wed, 29 May 2019 19:24:24 +0200 Subject: [PATCH 04/24] Update to sbt-scalajs 0.6.28 and 1.0.0-M8 --- .travis.yml | 4 ++-- build.sbt | 2 +- project/plugins.sbt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index af260cfa..b5334823 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,8 +20,8 @@ env: matrix: # The empty SCALAJS_VERSION will only compile for the JVM - SCALAJS_VERSION= - - SCALAJS_VERSION=0.6.27 - - SCALAJS_VERSION=1.0.0-M7 + - SCALAJS_VERSION=0.6.28 + - SCALAJS_VERSION=1.0.0-M8 matrix: include: diff --git a/build.sbt b/build.sbt index e4753b7b..cd798038 100644 --- a/build.sbt +++ b/build.sbt @@ -14,7 +14,7 @@ lazy val `scala-parser-combinators` = crossProject(JSPlatform, JVMPlatform, Nati settings( name := "scala-parser-combinators", version := "1.1.2-SNAPSHOT", - mimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0-M7"), + mimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0-M8"), apiMappings += (scalaInstance.value.libraryJar -> url(s"https://www.scala-lang.org/api/${scalaVersion.value}/")), diff --git a/project/plugins.sbt b/project/plugins.sbt index 525fb023..9918b795 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,7 @@ addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "2.0.0") val scalaJSVersion = - Option(System.getenv("SCALAJS_VERSION")).filter(_.nonEmpty).getOrElse("0.6.27") + Option(System.getenv("SCALAJS_VERSION")).filter(_.nonEmpty).getOrElse("0.6.28") addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) From 9d5163e39b39a8527025fbbc1fb309f984007ba0 Mon Sep 17 00:00:00 2001 From: Philippus Date: Wed, 29 May 2019 19:24:48 +0200 Subject: [PATCH 05/24] Update sbt-scala-native to 0.3.9 --- .travis.yml | 2 +- project/plugins.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b5334823..ff4197a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,7 @@ env: matrix: include: - - env: SCALANATIVE_VERSION=0.3.8 + - env: SCALANATIVE_VERSION=0.3.9 jdk: oraclejdk8 script: admin/build.sh diff --git a/project/plugins.sbt b/project/plugins.sbt index 9918b795..5c408086 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,7 +6,7 @@ val scalaJSVersion = addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) val scalaNativeVersion = - Option(System.getenv("SCALANATIVE_VERSION")).filter(_.nonEmpty).getOrElse("0.3.8") + Option(System.getenv("SCALANATIVE_VERSION")).filter(_.nonEmpty).getOrElse("0.3.9") addSbtPlugin("org.scala-native" % "sbt-scala-native" % scalaNativeVersion) From f4c2419aa39c6b237dc17c1b12816252805f0de3 Mon Sep 17 00:00:00 2001 From: Philippus Date: Wed, 29 May 2019 19:58:07 +0200 Subject: [PATCH 06/24] Update scala 2.13.0-RC2 to 2.13.0-RC3 --- .travis.yml | 2 +- build.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ff4197a8..9b7ba5c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ jdk: scala: - 2.11.12 - 2.12.8 - - 2.13.0-RC2 + - 2.13.0-RC3 env: global: diff --git a/build.sbt b/build.sbt index cd798038..6d566764 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ import ScalaModulePlugin._ import sbtcrossproject.crossProject -crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0-RC2") +crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0-RC3") lazy val root = project.in(file(".")) .aggregate(`scala-parser-combinatorsJS`, `scala-parser-combinatorsJVM`, `scala-parser-combinatorsNative`) From c156bf61687646fa6912837dc78def7d2add7365 Mon Sep 17 00:00:00 2001 From: Philippus Date: Fri, 7 Jun 2019 19:54:10 +0200 Subject: [PATCH 07/24] Update scala 2.13.0-RC3 to 2.13.0 --- .travis.yml | 2 +- build.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9b7ba5c5..a927b153 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ jdk: scala: - 2.11.12 - 2.12.8 - - 2.13.0-RC3 + - 2.13.0 env: global: diff --git a/build.sbt b/build.sbt index 6d566764..df6d6d26 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ import ScalaModulePlugin._ import sbtcrossproject.crossProject -crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0-RC3") +crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0") lazy val root = project.in(file(".")) .aggregate(`scala-parser-combinatorsJS`, `scala-parser-combinatorsJVM`, `scala-parser-combinatorsNative`) From cbbe3a8cd032f61b19e15057e446814893852a68 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Fri, 26 Jul 2019 17:33:59 +0100 Subject: [PATCH 08/24] Added Scala Native 0.4.0-M2 to .travis.yml --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index a927b153..cba155aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,6 +27,8 @@ matrix: include: - env: SCALANATIVE_VERSION=0.3.9 jdk: oraclejdk8 + - env: SCALANATIVE_VERSION=0.4.0-M2 + jdk: oraclejdk8 script: admin/build.sh From bedfa98e5c44dec8dca2939fbe1d3b2fe832e163 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sat, 22 Feb 2020 09:49:07 +0100 Subject: [PATCH 09/24] Update scala-js to 1.0.0 --- .travis.yml | 2 +- build.sbt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index cba155aa..c2dea755 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ env: # The empty SCALAJS_VERSION will only compile for the JVM - SCALAJS_VERSION= - SCALAJS_VERSION=0.6.28 - - SCALAJS_VERSION=1.0.0-M8 + - SCALAJS_VERSION=1.0.0 matrix: include: diff --git a/build.sbt b/build.sbt index df6d6d26..53d301a8 100644 --- a/build.sbt +++ b/build.sbt @@ -14,7 +14,7 @@ lazy val `scala-parser-combinators` = crossProject(JSPlatform, JVMPlatform, Nati settings( name := "scala-parser-combinators", version := "1.1.2-SNAPSHOT", - mimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0-M8"), + mimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0"), apiMappings += (scalaInstance.value.libraryJar -> url(s"https://www.scala-lang.org/api/${scalaVersion.value}/")), From 0935af98267b1c56cbff1f22e3ea72a4e1bb7c8b Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Wed, 26 Feb 2020 11:54:35 +0100 Subject: [PATCH 10/24] backport new publishing scripts based on sbt-ci-release --- .travis.yml | 50 ++++++++++---------------- admin/README.md | 72 ------------------------------------- admin/build.sh | 62 -------------------------------- admin/encryptEnvVars.sh | 11 ------ admin/genKeyPair.sh | 41 --------------------- admin/gpg.sbt | 1 - admin/publish-settings.sbt | 9 ----- admin/pubring.asc | 18 ---------- admin/secring.asc.enc | Bin 1888 -> 0 bytes build.sbt | 57 ++++++++++++++--------------- build.sh | 56 +++++++++++++++++++++++++++++ project/build.properties | 2 +- project/plugins.sbt | 14 ++++---- 13 files changed, 110 insertions(+), 283 deletions(-) delete mode 100644 admin/README.md delete mode 100755 admin/build.sh delete mode 100755 admin/encryptEnvVars.sh delete mode 100755 admin/genKeyPair.sh delete mode 100644 admin/gpg.sbt delete mode 100644 admin/publish-settings.sbt delete mode 100644 admin/pubring.asc delete mode 100644 admin/secring.asc.enc create mode 100755 build.sh diff --git a/.travis.yml b/.travis.yml index c2dea755..46d28257 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,48 +1,34 @@ -dist: trusty +version: ~> 1.0 # needed for imports + +import: scala/scala-dev:travis/default.yml + language: scala -jdk: - - oraclejdk8 - - openjdk11 scala: - 2.11.12 - - 2.12.8 - - 2.13.0 + - 2.12.10 + - 2.13.1 env: - global: - # PGP_PASSPHRASE - - secure: "SkBtn/6OjEldoikn0MFuyeLT/pau27kwKSDYTVQeJ4BKDzdWLwLE5Q3RukLGttIfNdhOvRoocpQSW9GkZfibTHmwrRnAokucfZCqTsKbwoOp1xIoOh5GrrVrB6gcP7WBTKinqFdBgSvLOrP7GviImz4ZuB9wq1r+mToGG4pDrXc=" - # SONA_USER - - secure: "JSv/Er6q1XtTpRH1bpU63YBf7ufwg0vW+Kv/udQBtr8YX/P3gRYC1x6hW4uwftaKMYh7wXDkfNy51SRpH3kUptdJvjPUifVElyPiYlsumetmD+rZJmxX6agx+U5pdjIXPqPoton9MdSVHNTROeTu339bDak0Z+N5ht5wRfjP7F4=" - # SONA_PASS - - secure: "OIVtcj7AHZr8Grpf03ZmZsygcADewiYIvSnRwLYCx+5AqOzs39EZ68DsIOxi7wEXVUbVj5RvLXpKzLX3iN+UszLOQRoFPFQyyn+3Y50f8T2aRxdZtInzXn0sCVTj4Hhd/zbKl1W+2Nh3Sqazab7tFoQVzEyYqhcPeiNRMF7h+aY=" - matrix: - # The empty SCALAJS_VERSION will only compile for the JVM - - SCALAJS_VERSION= - - SCALAJS_VERSION=0.6.28 - - SCALAJS_VERSION=1.0.0 + - ADOPTOPENJDK=8 SCALAJS_VERSION= + - ADOPTOPENJDK=8 SCALAJS_VERSION=0.6.32 + - ADOPTOPENJDK=8 SCALAJS_VERSION=1.0.0 + - ADOPTOPENJDK=11 SCALAJS_VERSION= matrix: include: - - env: SCALANATIVE_VERSION=0.3.9 - jdk: oraclejdk8 - - env: SCALANATIVE_VERSION=0.4.0-M2 - jdk: oraclejdk8 + - scala: 2.11.12 + env: ADOPTOPENJDK=8 SCALANATIVE_VERSION=0.3.9 + - scala: 2.11.12 + env: ADOPTOPENJDK=8 SCALANATIVE_VERSION=0.4.0-M2 -script: admin/build.sh +install: + - git fetch --tags # get all tags for sbt-dynver + +script: ./build.sh notifications: email: - adriaan.moors@lightbend.com - seth.tisue@lightbend.com - antoine@gourlay.fr - -before_cache: - - find $HOME/.sbt -name "*.lock" | xargs rm - - find $HOME/.ivy2/cache -name "ivydata-*.properties" | xargs rm -cache: - directories: - - $HOME/.ivy2/cache - - $HOME/.sbt/boot - - $HOME/.sbt/launchers diff --git a/admin/README.md b/admin/README.md deleted file mode 100644 index dab2d1ea..00000000 --- a/admin/README.md +++ /dev/null @@ -1,72 +0,0 @@ -## Tag Driven Releasing - -### Background Reading - - - http://docs.travis-ci.com/user/environment-variables/ - - http://docs.travis-ci.com/user/encryption-keys/ - - http://docs.travis-ci.com/user/encrypting-files/ - -### Initial setup for the repository - -To configure tag driven releases from Travis CI. - - 1. Generate a key pair for this repository with `./admin/genKeyPair.sh`. - Edit `.travis.yml` and `admin/build.sh` as prompted. - 1. Publish the public key to https://pgp.mit.edu - 1. Store other secrets as encrypted environment variables with `admin/encryptEnvVars.sh`. - Edit `.travis.yml` as prompted. - 1. Edit `.travis.yml` to use `./admin/build.sh` as the build script, - and edit that script to use the tasks required for this project. - 1. Edit `build.sbt`'s `scalaVersionsByJvm in ThisBuild` to select Scala and JVM version - combinations that will be used for publishing. - -It is important to add comments in `.travis.yml` to identify the name -of each environment variable encoded in a `:secure` section. - -After these steps, your `.travis.yml` should contain config of the form: - -``` -language: scala - -env: - global: - # PGP_PASSPHRASE - - secure: "XXXXXX" - # SONA_USER - - secure: "XXXXXX" - # SONA_PASS - - secure: "XXXXXX" - -script: admin/build.sh - -jdk: - - oraclejdk8 - - openjdk11 - -notifications: - email: - - a@b.com -``` - -If Sonatype credentials change in the future, step 3 can be repeated -without generating a new key. - -### Testing - - 1. Follow the release process below to create a dummy release (e.g., `v0.1.0-TEST1`). - Confirm that the release was staged to Sonatype but do not release it to Maven - central. Instead, drop the staging repository. - -### Performing a release - - 1. Create a GitHub "Release" with a corresponding tag (e.g., `v0.1.1`) via the GitHub - web interface. - 1. The release will be published using the Scala and JVM version combinations specified - in `scalaVersionsByJvm` in `build.sbt`. - - If you need to release against a different Scala version, include the Scala version - and the JVM version to use in the tag name, separated by `#`s (e.g., `v0.1.1#2.13.0-M1#8`). - Note that the JVM version needs to be listed in `.travis.yml` for the build to run. - 1. Travis CI will schedule a build for this release. Review the build logs. - 1. Log into https://oss.sonatype.org/ and identify the staging repository. - 1. Sanity check its contents. - 1. Release staging repository to Maven and send out release announcement. diff --git a/admin/build.sh b/admin/build.sh deleted file mode 100755 index 20b54c20..00000000 --- a/admin/build.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -set -e - -# Builds of tagged revisions are published to sonatype staging. - -# Travis runs a build on new revisions, including on new tags. -# Builds for a tag have TRAVIS_TAG defined, which we use for identifying tagged builds. -# Checking the local git clone would not work because git on travis does not fetch tags. - -# The version number to be published is extracted from the tag, e.g., v1.2.3 publishes -# version 1.2.3 using all Scala versions in the travis matrix where -# [ "$RELEASE_COMBO" = "true" ]. - -# In order to build a previously released version against a new (binary incompatible) Scala release, -# a new commit that modifies (and prunes) the Scala versions in .travis.yml needs to be added on top -# of the existing tag. Then a new tag can be created for that commit, e.g., `v1.2.3#2.13.0-M5`. -# Everything after the `#` in the tag name is ignored. - -if [[ "$SCALANATIVE_VERSION" != "" ]]; then - if [[ "$TRAVIS_JDK_VERSION" == "oraclejdk8" && "$TRAVIS_SCALA_VERSION" =~ 2\.11\..* ]]; then - RELEASE_COMBO=true; - fi -elif [[ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ]]; then - RELEASE_COMBO=true; -fi - -if ! [ "$SCALAJS_VERSION" == "" ]; then - projectPrefix="scala-parser-combinatorsJS" -elif ! [ "$SCALANATIVE_VERSION" == "" ]; then - projectPrefix="scala-parser-combinatorsNative" -else - projectPrefix="scala-parser-combinators" -fi - -verPat="[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)?" -tagPat="^v$verPat(#$verPat#[0-9]+)?$" - -if [[ "$TRAVIS_TAG" =~ $tagPat ]]; then - tagVer=${TRAVIS_TAG} - tagVer=${tagVer#v} # Remove `v` at beginning. - tagVer=${tagVer%%#*} # Remove anything after `#`. - publishVersion='set every version := "'$tagVer'"' - - if [ "$RELEASE_COMBO" = "true" ]; then - currentJvmVer=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | sed 's/^1\.//' | sed 's/[^0-9].*//') - echo "Releasing $tagVer with Scala $TRAVIS_SCALA_VERSION on Java version $currentJvmVer." - - publishTask="$projectPrefix/publishSigned" - - cat admin/gpg.sbt >> project/plugins.sbt - cp admin/publish-settings.sbt . - - # Copied from the output of genKeyPair.sh - K=$encrypted_5e972ec514e2_key - IV=$encrypted_5e972ec514e2_iv - - openssl aes-256-cbc -K $K -iv $IV -in admin/secring.asc.enc -out admin/secring.asc -d - fi -fi - -sbt "++$TRAVIS_SCALA_VERSION" "$publishVersion" "$projectPrefix/update" "$projectPrefix/compile" "$projectPrefix/test" "$projectPrefix/publishLocal" "$publishTask" diff --git a/admin/encryptEnvVars.sh b/admin/encryptEnvVars.sh deleted file mode 100755 index b6256679..00000000 --- a/admin/encryptEnvVars.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -# Encrypt sonatype credentials so that they can be -# decrypted in trusted builds on Travis CI. -# -set -e - -read -s -p 'SONA_USER: ' SONA_USER -travis encrypt SONA_USER="$SONA_USER" -read -s -p 'SONA_PASS: ' SONA_PASS -travis encrypt SONA_PASS="$SONA_PASS" diff --git a/admin/genKeyPair.sh b/admin/genKeyPair.sh deleted file mode 100755 index 17db3f39..00000000 --- a/admin/genKeyPair.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -# Generates a key pair for this repository to sign artifacts. -# Encrypt the private key and its passphrase in trusted builds -# on Travis CI. -# -set -e - -# Based on https://gist.github.com/kzap/5819745: -function promptDelete() { - if [[ -f "$1" ]]; then - echo About to delete $1, Enter for okay / CTRL-C to cancel - read - rm "$1" - fi -} -for f in admin/secring.asc.enc admin/secring.asc admin/pubring.asc; do promptDelete "$f"; done - -echo Generating key pair. Please enter 1. repo name 2. scala-internals@googlegroups.com, 3. a new passphrase -echo Be careful when using special characters in the passphrase, see http://docs.travis-ci.com/user/encryption-keys/#Note-on-escaping-certain-symbols -cp admin/gpg.sbt project -sbt 'set pgpReadOnly := false' \ - 'set pgpPublicRing := file("admin/pubring.asc")' \ - 'set pgpSecretRing := file("admin/secring.asc")' \ - 'pgp-cmd gen-key' -rm project/gpg.sbt - -echo ============================================================================================ -echo Encrypting admin/secring.asc. Update K and IV variables in admin/build.sh accordingly. -echo ============================================================================================ -travis encrypt-file admin/secring.asc -rm admin/secring.asc -mv secring.asc.enc admin - -echo ============================================================================================ -echo Encrypting environment variables. Add each to a line in .travis.yml. Include a comment -echo with the name of the corresponding variable -echo ============================================================================================ -read -s -p 'PGP_PASSPHRASE: ' PGP_PASSPHRASE -travis encrypt PGP_PASSPHRASE="$PGP_PASSPHRASE" - diff --git a/admin/gpg.sbt b/admin/gpg.sbt deleted file mode 100644 index 3b55e214..00000000 --- a/admin/gpg.sbt +++ /dev/null @@ -1 +0,0 @@ -addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.2-1") // only added when publishing, see build.sh diff --git a/admin/publish-settings.sbt b/admin/publish-settings.sbt deleted file mode 100644 index f11b56ad..00000000 --- a/admin/publish-settings.sbt +++ /dev/null @@ -1,9 +0,0 @@ -def env(key: String) = Option(System.getenv(key)).getOrElse("") - -pgpPassphrase := Some(env("PGP_PASSPHRASE").toArray) - -pgpPublicRing := file("admin/pubring.asc") - -pgpSecretRing := file("admin/secring.asc") - -Global / credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", env("SONA_USER"), env("SONA_PASS")) diff --git a/admin/pubring.asc b/admin/pubring.asc deleted file mode 100644 index f6c13e89..00000000 --- a/admin/pubring.asc +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v1.49 - -mQENBFVQwAoBCACr9atY5vDPbvYEMO8D4OvBz/YTP/tr43S/ibYIL2SAAZXvoVht -5BRAw063HqeM74U58isdbrt33VfmmJSJ0lVJX3iJ6dJeRO66az4aiqUckDP1JyVx -S3PJc402PcnF2Is849DHJF8AutIiAVnXa+gD5j/BShA6UZek9LqM9SRIl0SwE4Xo -WfMGdfvgQFl2vKJohrUbpKIYnhPa4HEu9FUFjVWn4iemeUVZ5OWzfEWNymrWDdLC -q5j1YMfjVvrtT3DhQD+HnDM4l5FNFxl7DHJkeMZZl+pp6RxS++m+/xMK5WmGj2Un -JUKzdoXGJdBA2q3erk5Dq6++ivvLqABt2J8DABEBAAG0O3NjYWxhLXBhcnNlci1j -b21iaW5hdG9ycyA8c2NhbGEtaW50ZXJuYWxzQGdvb2dsZWdyb3Vwcy5jb20+iQEc -BBMBAgAGBQJVUMAKAAoJEHCQr0Ol4Q0LX7MH/1GTgBitKA/RNXK04k//P9U4k7bX -ofJDUrtwx+WNg2bi2er6RQhsWPWQ3p/clgK7by93XkgDrBPLsUTIUTCHGa/Dn9R+ -h5syQfjI5iDi1AZ47ARmSZisadG6RAzLNewQUFcYwBTmGxLBrGBjcxvrmUN1XLml -jA4mqzvApDvwMrzWKdE6eNBf7G2k4dlwG4AzkSNMHfCDFXUgqsqvodrAp+WmGpbN -kZzrAVYoZtfKfalakjZDdn6EqKgw0VgZynSCX1gfwrwLric12fCBWbqXARiMVaM2 -EUqbFszdNRkD/TT9vDIabQqZvLsJO6Ql50hrOJ7IPoEmxJukuS64Je/AYiM= -=iDWo ------END PGP PUBLIC KEY BLOCK----- diff --git a/admin/secring.asc.enc b/admin/secring.asc.enc deleted file mode 100644 index fd45d25625dba57ae0f971e69e32ec50136123d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 zcmV-m2cP)+)>NpOwDnBaUCsWMmIJe566=u@+-$PhisfeEhHM2$B+bh@EL&0yT1poc|I{ zS)ebRfc;v|$Em#1upq!rfnu8Au(*|wK+AvEYgwooxJ-Y@mgT|vZs|$XOK~MS&)v&hFu(CH=CmuXjlsZ3XL&`KA=7&*hrebIt>&!7drJC8z^K(8JJ zkN|+W3MNORV>^nX^gp^L#&iKpO(p@BoAOO#k&TTV8y`lus2{M-R2Y?Z`#B6_uJYM6 zHE*F}!h}~w_4XnsJ6sEai6nN>rP<2`6xYG~>bM3{!-=z5Z8obt9W<$zF|LqVzoJ9& zAP4z~5^DQc(-7A6$Z~sVf=AFp`IfFEyGTIlIO;T2{njjFI9cO63%C9wn4(|y`uyMm$Qjvgd%jE!-O zaaQT(+}COX=eMFx21DRDrp595xmdl{i&-UM1kOTRR%?~JpvV>ZN5gox%q8IFd)U&? zMHZsyU)LAwjJ6B(iJdJ10&1z+1MB~OF}y&a?`CAQ4ZT2WpUDrMAr?d%td+`~-?8^z zUf%6iJsV8eG!Aa;&aYHnqG5fH4-=k1*zpoa+rUjgVhPNTjJQ`xlt|7X09+uH5E;gB zQwv3DVC2?0(S{Mqk7Z<_QS|xFhp(Br;C0+PBMFaFbR^Hx1ha#}tpqIE)SqEVT*uXKB->wsKXzQ7 zah^>_2@bpoQX#s%^Mn^pf{C)sK}*DdUxZ!0^p{r#FAs{NR~{o%M$^*k&-rYk zY^k2C#-qyF`C>c^JHgi`Y8>dK7ps+4yd}@Qe{0dy?1<(vSlut5xI5G@RA9{4ZkzEk zdRJ`Tp^+T9M&_u>5@}jJHN?y*=<2AUWnTc9c>|276b*qU#LxRIA_7}ng2pz9IBPu& zFof|=)v9u{_p}GqAU+G;bahvX23@g4zOx*t>6Q)mBsfMxB(drh&Yv)iGz_v^$JuZ@ngC zgVWI}hZke&+O2Tjb5pbk!C-RwnatXT;D|4 z72tE3*q24<|B<{N!<~iFgc`9?@nli}inEKfbp6c1^SW-`F*v({Y>J~67f~w5E3-!G zu;I@azC9ZLJLM?uWxoYBuCcpgw}#LSc^J6KCryZ1Nt^a1cq-0$A8O4brzg*cw<2^| z?kTwV>q;GHJ-4&phqfl70P8NX5FRkL$@xI$PR<$S-mR-sB;Rf?&%$n!Rla7ib$X4P ztG2z-?@U0B*Ut2-iN;(jjdq$|(A#iPuJbenhgFOG?QE4iQnk8flAjU^P9JZ6VSaH> z!|jbzPSZ3GLx_QMcEaH@+$t{Jua1Nsf!qC@HmgO0{(PMsWhO{U_w1Nnfe!MR-yo?i ak)wR%3r_F~Ewj!$!0y^z;?)DNF0T2uSiS@R diff --git a/build.sbt b/build.sbt index 53d301a8..d8c7caf2 100644 --- a/build.sbt +++ b/build.sbt @@ -1,23 +1,28 @@ -import ScalaModulePlugin._ -import sbtcrossproject.crossProject +import sbtcrossproject.CrossPlugin.autoImport.crossProject -crossScalaVersions in ThisBuild := List("2.12.8", "2.11.12", "2.13.0") +lazy val parserCombinators = crossProject(JVMPlatform, JSPlatform, NativePlatform) + .withoutSuffixFor(JVMPlatform).in(file(".")) + .settings(ScalaModulePlugin.scalaModuleSettings) + .jvmSettings(ScalaModulePlugin.scalaModuleSettingsJVM) + .settings( + name := "scala-parser-combinators", -lazy val root = project.in(file(".")) - .aggregate(`scala-parser-combinatorsJS`, `scala-parser-combinatorsJVM`, `scala-parser-combinatorsNative`) - .settings(disablePublishing) + scalaModuleMimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0"), + mimaBinaryIssueFilters ++= { + import com.typesafe.tools.mima.core._ + import com.typesafe.tools.mima.core.ProblemFilters._ + Seq( + exclude[IncompatibleSignatureProblem]("*"), -lazy val `scala-parser-combinators` = crossProject(JSPlatform, JVMPlatform, NativePlatform). - withoutSuffixFor(JVMPlatform).in(file(".")). - settings(scalaModuleSettings: _*). - jvmSettings(scalaModuleSettingsJVM). - settings( - name := "scala-parser-combinators", - version := "1.1.2-SNAPSHOT", - mimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0"), + // the following 3 are due to https://github.com/lightbend/mima/issues/388 + exclude[DirectMissingMethodProblem]("scala.util.parsing.json.JSON.numberParser"), + exclude[DirectMissingMethodProblem]("scala.util.parsing.json.JSON.defaultNumberParser"), + exclude[DirectMissingMethodProblem]("scala.util.parsing.json.JSON.keywordCache") + ) + }, apiMappings += (scalaInstance.value.libraryJar -> - url(s"https://www.scala-lang.org/api/${scalaVersion.value}/")), + url(s"https://www.scala-lang.org/api/${scalaVersion.value}/")), scalacOptions in (Compile, doc) ++= Seq( "-diagrams", @@ -38,18 +43,18 @@ lazy val `scala-parser-combinators` = crossProject(JSPlatform, JVMPlatform, Nati } } } - ). - jvmSettings( + ) + .jvmSettings( OsgiKeys.exportPackage := Seq(s"scala.util.parsing.*;version=${version.value}"), - libraryDependencies += "junit" % "junit" % "4.12" % "test", - libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % "test" - ). - jsSettings( + libraryDependencies += "junit" % "junit" % "4.13" % Test, + libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % Test + ) + .jsSettings( // Scala.js cannot run forked tests fork in Test := false - ). - jsConfigure(_.enablePlugins(ScalaJSJUnitPlugin)). - nativeSettings( + ) + .jsConfigure(_.enablePlugins(ScalaJSJUnitPlugin)) + .nativeSettings( skip in compile := System.getProperty("java.version").startsWith("1.6") || !scalaVersion.value.startsWith("2.11"), test := {}, libraryDependencies := { @@ -58,7 +63,3 @@ lazy val `scala-parser-combinators` = crossProject(JSPlatform, JVMPlatform, Nati else libraryDependencies.value } ) - -lazy val `scala-parser-combinatorsJVM` = `scala-parser-combinators`.jvm -lazy val `scala-parser-combinatorsJS` = `scala-parser-combinators`.js -lazy val `scala-parser-combinatorsNative` = `scala-parser-combinators`.native diff --git a/build.sh b/build.sh new file mode 100755 index 00000000..96184a0e --- /dev/null +++ b/build.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +set -e + +# Builds of tagged revisions are published to sonatype staging. + +# Travis runs a build on new revisions and on new tags, so a tagged revision is built twice. +# Builds for a tag have TRAVIS_TAG defined, which we use for identifying tagged builds. + +# sbt-dynver sets the version number from the tag +# sbt-travisci sets the Scala version from the travis job matrix + +# To back-publish an existing release for a new Scala / Scala.js / Scala Native version: +# - check out the tag for the version that needs to be published +# - change `.travis.yml` to adjust the version numbers and trim down the build matrix as necessary +# - commit the changes and tag this new revision with an arbitrary suffix after a hash, e.g., +# `v1.2.3#dotty-0.27` (the suffix is ignored, the version will be `1.2.3`) + +# For normal tags that are cross-built, we release on JDK 8 for Scala 2.x +isReleaseJob() { + if [[ "$ADOPTOPENJDK" == "8" && "$TRAVIS_SCALA_VERSION" =~ ^2\.1[01234]\..*$ ]]; then + true + else + false + fi +} + +if [[ "$SCALAJS_VERSION" != "" ]]; then + projectPrefix="parserCombinatorsJS" +elif [[ "$SCALANATIVE_VERSION" != "" ]]; then + projectPrefix="parserCombinatorsNative" +else + projectPrefix="parserCombinators" +fi + +verPat="[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)?" +tagPat="^v$verPat(#.*)?$" + +if [[ "$TRAVIS_TAG" =~ $tagPat ]]; then + releaseTask="ci-release" + if ! isReleaseJob; then + echo "Not releasing on Java $ADOPTOPENJDK with Scala $TRAVIS_SCALA_VERSION" + exit 0 + fi +fi + +# default is +publishSigned; we cross-build with travis jobs, not sbt's crossScalaVersions +export CI_RELEASE="$projectPrefix/publishSigned" +export CI_SNAPSHOT_RELEASE="$projectPrefix/publish" + +# default is sonatypeBundleRelease, which closes and releases the staging repo +# see https://github.com/xerial/sbt-sonatype#commands +# for now, until we're confident in the new release scripts, just close the staging repo. +export CI_SONATYPE_RELEASE="; sonatypePrepare; sonatypeBundleUpload; sonatypeClose" + +sbt clean $projectPrefix/test $projectPrefix/publishLocal $releaseTask diff --git a/project/build.properties b/project/build.properties index c0bab049..a919a9b5 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.2.8 +sbt.version=1.3.8 diff --git a/project/plugins.sbt b/project/plugins.sbt index 5c408086..1d7924ab 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,15 +1,13 @@ -addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "2.0.0") - val scalaJSVersion = - Option(System.getenv("SCALAJS_VERSION")).filter(_.nonEmpty).getOrElse("0.6.28") - -addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) + Option(System.getenv("SCALAJS_VERSION")).filter(_.nonEmpty).getOrElse("0.6.32") val scalaNativeVersion = Option(System.getenv("SCALANATIVE_VERSION")).filter(_.nonEmpty).getOrElse("0.3.9") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % scalaNativeVersion) +addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "2.1.3") -addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "0.6.0") +addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.0.0") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) -addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "0.6.0") +addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.0.0") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % scalaNativeVersion) From 00acda8d0afd8e82a024351246bd4ac2db25ad36 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 4 Nov 2020 12:37:53 -0800 Subject: [PATCH 11/24] remove author tags from Scaladoc It's noise. We did the same thing in the Scala standard library sources a while ago. --- .../scala/scala/util/parsing/input/PositionCache.scala | 3 --- .../util/parsing/combinator/ImplicitConversions.scala | 4 ---- .../scala/util/parsing/combinator/PackratParsers.scala | 2 -- .../scala/scala/util/parsing/combinator/Parsers.scala | 4 ---- .../scala/util/parsing/combinator/lexical/Lexical.scala | 2 -- .../scala/util/parsing/combinator/lexical/Scanners.scala | 2 -- .../util/parsing/combinator/lexical/StdLexical.scala | 4 ---- .../combinator/syntactical/StandardTokenParsers.scala | 2 -- .../parsing/combinator/syntactical/StdTokenParsers.scala | 2 -- .../parsing/combinator/syntactical/TokenParsers.scala | 3 --- .../scala/util/parsing/combinator/token/StdTokens.scala | 3 --- .../scala/util/parsing/combinator/token/Tokens.scala | 3 --- .../scala/scala/util/parsing/input/CharArrayReader.scala | 6 ------ .../scala/util/parsing/input/CharSequenceReader.scala | 4 ---- .../main/scala/scala/util/parsing/input/NoPosition.scala | 3 --- .../scala/scala/util/parsing/input/OffsetPosition.scala | 2 -- .../main/scala/scala/util/parsing/input/PagedSeq.scala | 1 - .../scala/scala/util/parsing/input/PagedSeqReader.scala | 5 ----- .../main/scala/scala/util/parsing/input/Position.scala | 3 --- .../main/scala/scala/util/parsing/input/Positional.scala | 2 -- .../src/main/scala/scala/util/parsing/input/Reader.scala | 3 --- .../scala/scala/util/parsing/input/StreamReader.scala | 5 ----- shared/src/main/scala/scala/util/parsing/json/JSON.scala | 2 -- .../src/main/scala/scala/util/parsing/json/Lexer.scala | 3 --- .../src/main/scala/scala/util/parsing/json/Parser.scala | 9 --------- 25 files changed, 82 deletions(-) diff --git a/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala b/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala index 80d6e700..3ead08f9 100644 --- a/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala +++ b/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala @@ -14,9 +14,6 @@ package scala.util.parsing.input 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 :-( diff --git a/shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala b/shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala index 25f7a681..7cc986d1 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/ImplicitConversions.scala @@ -27,10 +27,6 @@ import scala.language.implicitConversions * The `headOptionTailToFunList` converts a function that takes a `List[A]` to a function that * accepts a `~[A, Option[List[A]]]` (this happens when parsing something of the following * shape: `p ~ opt("." ~ repsep(p, "."))` -- where `p` is a parser that yields an `A`). - * - * @author Martin Odersky - * @author Iulian Dragos - * @author Adriaan Moors */ trait ImplicitConversions { self: Parsers => implicit def flatten2[A, B, C] (f: (A, B) => C) = diff --git a/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala index f601f924..3b06ab13 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala @@ -51,8 +51,6 @@ import scala.language.implicitConversions * @see Alessandro Warth, James R. Douglass, Todd Millstein: "Packrat Parsers Can Support Left Recursion." PEPM'08 * * @since 2.8 - * @author Manohar Jonnalagedda - * @author Tiark Rompf */ trait PackratParsers extends Parsers { diff --git a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala index 4783afea..6beec2ac 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala @@ -72,10 +72,6 @@ import scala.language.implicitConversions * methods `success`, `err` and `failure` as examples. * * @see [[scala.util.parsing.combinator.RegexParsers]] and other known subclasses for practical examples. - * - * @author Martin Odersky - * @author Iulian Dragos - * @author Adriaan Moors */ trait Parsers { /** the type of input elements the provided parsers consume (When consuming diff --git a/shared/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala b/shared/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala index fdee2b3b..72b745b9 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/lexical/Lexical.scala @@ -23,8 +23,6 @@ import input.CharArrayReader.EofCh * * Refer to [[scala.util.parsing.combinator.lexical.StdLexical]] * for a concrete implementation for a simple, Scala-like language. - * - * @author Martin Odersky, Adriaan Moors */ abstract class Lexical extends Scanners with Tokens { diff --git a/shared/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala b/shared/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala index 8b75f9fa..1eff6d0d 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/lexical/Scanners.scala @@ -21,8 +21,6 @@ import input._ * * See its subclasses [[scala.util.parsing.combinator.lexical.Lexical]] and -- most interestingly * [[scala.util.parsing.combinator.lexical.StdLexical]], for more functionality. - * - * @author Martin Odersky, Adriaan Moors */ trait Scanners extends Parsers { type Elem = Char diff --git a/shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala b/shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala index a41ec8d1..68423af1 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/lexical/StdLexical.scala @@ -32,10 +32,6 @@ import scala.collection.mutable * Usually this component is used to break character-based input into * bigger tokens, which are then passed to a token-parser (see * [[scala.util.parsing.combinator.syntactical.TokenParsers]].) - * - * @author Martin Odersky - * @author Iulian Dragos - * @author Adriaan Moors */ class StdLexical extends Lexical with StdTokens { // see `token` in `Scanners` diff --git a/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala index 7ac9b7c2..866aa616 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StandardTokenParsers.scala @@ -20,8 +20,6 @@ import lexical.StdLexical import scala.language.implicitConversions /** This component provides primitive parsers for the standard tokens defined in `StdTokens`. -* -* @author Martin Odersky, Adriaan Moors */ class StandardTokenParsers extends StdTokenParsers { type Tokens = StdTokens diff --git a/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala index 77249407..fb43388f 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala @@ -20,8 +20,6 @@ import scala.collection.mutable import scala.language.implicitConversions /** This component provides primitive parsers for the standard tokens defined in `StdTokens`. -* -* @author Martin Odersky, Adriaan Moors */ trait StdTokenParsers extends TokenParsers { type Tokens <: StdTokens diff --git a/shared/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala index 5414277b..dac00ac3 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/syntactical/TokenParsers.scala @@ -16,9 +16,6 @@ package combinator package syntactical /** This is the core component for token-based parsers. - * - * @author Martin Odersky - * @author Adriaan Moors */ trait TokenParsers extends Parsers { /** `Tokens` is the abstract type of the `Token`s consumed by the parsers in this component. */ diff --git a/shared/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala b/shared/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala index 49a8aee0..d25e6684 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/token/StdTokens.scala @@ -16,9 +16,6 @@ package combinator package token /** This component provides the standard `Token`s for a simple, Scala-like language. - * - * @author Martin Odersky - * @author Adriaan Moors */ trait StdTokens extends Tokens { /** The class of keyword tokens */ diff --git a/shared/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala b/shared/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala index 0bbecbb4..c535907c 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/token/Tokens.scala @@ -17,9 +17,6 @@ package token /** This component provides the notion of `Token`, the unit of information that is passed from lexical * parsers in the `Lexical` component to the parsers in the `TokenParsers` component. - * - * @author Martin Odersky - * @author Adriaan Moors */ trait Tokens { /** Objects of this type are produced by a lexical parser or ``scanner'', and consumed by a parser. diff --git a/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala b/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala index af1dcc49..0469cd11 100644 --- a/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala @@ -14,9 +14,6 @@ package scala package util.parsing.input /** An object encapsulating basic character constants. - * - * @author Martin Odersky - * @author Adriaan Moors */ object CharArrayReader { final val EofCh = '\u001a' @@ -27,9 +24,6 @@ object CharArrayReader { * * @param chars an array of characters * @param index starting offset into the array; the first element returned will be `source(index)` - * - * @author Martin Odersky - * @author Adriaan Moors */ class CharArrayReader(chars: Array[Char], index: Int) extends CharSequenceReader(chars, index) { diff --git a/shared/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala b/shared/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala index 9331305c..8514b31e 100644 --- a/shared/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/CharSequenceReader.scala @@ -14,8 +14,6 @@ package scala package util.parsing.input /** An object encapsulating basic character constants. - * - * @author Martin Odersky, Adriaan Moors */ object CharSequenceReader { final val EofCh = '\u001a' @@ -26,8 +24,6 @@ object CharSequenceReader { * * @param source the source sequence * @param offset starting offset. - * - * @author Martin Odersky */ class CharSequenceReader(override val source: java.lang.CharSequence, override val offset: Int) extends Reader[Char] { diff --git a/shared/src/main/scala/scala/util/parsing/input/NoPosition.scala b/shared/src/main/scala/scala/util/parsing/input/NoPosition.scala index 71bc2b25..a23a72bb 100644 --- a/shared/src/main/scala/scala/util/parsing/input/NoPosition.scala +++ b/shared/src/main/scala/scala/util/parsing/input/NoPosition.scala @@ -14,9 +14,6 @@ package scala package util.parsing.input /** Undefined position. - * - * @author Martin Odersky - * @author Adriaan Moors */ object NoPosition extends Position { def line = 0 diff --git a/shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala b/shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala index d3801281..0c3b6ec8 100644 --- a/shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala +++ b/shared/src/main/scala/scala/util/parsing/input/OffsetPosition.scala @@ -20,8 +20,6 @@ import scala.collection.mutable.ArrayBuffer * * @param source The source document * @param offset The offset indicating the position - * - * @author Martin Odersky */ case class OffsetPosition(source: CharSequence, offset: Int) extends Position { diff --git a/shared/src/main/scala/scala/util/parsing/input/PagedSeq.scala b/shared/src/main/scala/scala/util/parsing/input/PagedSeq.scala index 1159b9a5..30dc37c3 100644 --- a/shared/src/main/scala/scala/util/parsing/input/PagedSeq.scala +++ b/shared/src/main/scala/scala/util/parsing/input/PagedSeq.scala @@ -105,7 +105,6 @@ import PagedSeq._ * * @tparam T the type of the elements contained in this paged sequence, with an `ClassTag` context bound. * - * @author Martin Odersky * @define Coll `PagedSeq` * @define coll paged sequence * @define mayNotTerminateInf diff --git a/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala b/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala index 9df440b7..85a7e209 100644 --- a/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala @@ -14,9 +14,6 @@ package scala package util.parsing.input /** An object encapsulating basic character constants. - * - * @author Martin Odersky - * @author Adriaan Moors */ object PagedSeqReader { final val EofCh = '\u001a' @@ -27,8 +24,6 @@ object PagedSeqReader { * * @param seq the source sequence * @param offset starting offset. - * - * @author Martin Odersky */ class PagedSeqReader(seq: PagedSeq[Char], override val offset: Int) extends Reader[Char] { outer => diff --git a/shared/src/main/scala/scala/util/parsing/input/Position.scala b/shared/src/main/scala/scala/util/parsing/input/Position.scala index 8665c291..ba66b247 100644 --- a/shared/src/main/scala/scala/util/parsing/input/Position.scala +++ b/shared/src/main/scala/scala/util/parsing/input/Position.scala @@ -20,9 +20,6 @@ package util.parsing.input * - comparing two positions (`<`). * * To use this class for a concrete kind of `document`, implement the `lineContents` method. - * - * @author Martin Odersky - * @author Adriaan Moors */ trait Position { diff --git a/shared/src/main/scala/scala/util/parsing/input/Positional.scala b/shared/src/main/scala/scala/util/parsing/input/Positional.scala index 45616953..85673e98 100644 --- a/shared/src/main/scala/scala/util/parsing/input/Positional.scala +++ b/shared/src/main/scala/scala/util/parsing/input/Positional.scala @@ -14,8 +14,6 @@ package scala package util.parsing.input /** A trait for objects that have a source position. - * - * @author Martin Odersky, Adriaan Moors */ trait Positional { diff --git a/shared/src/main/scala/scala/util/parsing/input/Reader.scala b/shared/src/main/scala/scala/util/parsing/input/Reader.scala index d0fe908f..67ee1774 100644 --- a/shared/src/main/scala/scala/util/parsing/input/Reader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/Reader.scala @@ -15,9 +15,6 @@ package util.parsing.input /** An interface for streams of values that have positions. - * - * @author Martin Odersky - * @author Adriaan Moors */ abstract class Reader[+T] { diff --git a/shared/src/main/scala/scala/util/parsing/input/StreamReader.scala b/shared/src/main/scala/scala/util/parsing/input/StreamReader.scala index f7c778ff..b733ffa7 100644 --- a/shared/src/main/scala/scala/util/parsing/input/StreamReader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/StreamReader.scala @@ -14,8 +14,6 @@ package scala package util.parsing.input /** An object to create a `StreamReader` from a `java.io.Reader`. - * - * @author Miles Sabin */ object StreamReader { final val EofCh = '\u001a' @@ -42,9 +40,6 @@ object StreamReader { * * If you need to match regexes spanning several lines you should consider * class `PagedSeqReader` instead. - * - * @author Miles Sabin - * @author Martin Odersky */ sealed class StreamReader private (seq: PagedSeq[Char], off: Int, lnum: Int, nextEol0: Int) extends PagedSeqReader(seq, off) { def this(seq: PagedSeq[Char], off: Int, lnum: Int) = this(seq, off, lnum, -1) diff --git a/shared/src/main/scala/scala/util/parsing/json/JSON.scala b/shared/src/main/scala/scala/util/parsing/json/JSON.scala index 9e7fee3d..60c4b7ce 100644 --- a/shared/src/main/scala/scala/util/parsing/json/JSON.scala +++ b/shared/src/main/scala/scala/util/parsing/json/JSON.scala @@ -29,8 +29,6 @@ package util.parsing.json * // Per-thread override * JSON.perThreadNumberParser = myConversionFunc * }}} - * - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") object JSON extends Parser { diff --git a/shared/src/main/scala/scala/util/parsing/json/Lexer.scala b/shared/src/main/scala/scala/util/parsing/json/Lexer.scala index cd18ac75..9ce0221d 100644 --- a/shared/src/main/scala/scala/util/parsing/json/Lexer.scala +++ b/shared/src/main/scala/scala/util/parsing/json/Lexer.scala @@ -17,9 +17,6 @@ import scala.util.parsing.combinator._ import scala.util.parsing.combinator.lexical._ import scala.util.parsing.input.CharArrayReader.EofCh -/** - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> - */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") class Lexer extends StdLexical with ImplicitConversions { diff --git a/shared/src/main/scala/scala/util/parsing/json/Parser.scala b/shared/src/main/scala/scala/util/parsing/json/Parser.scala index 63965bbe..6e4d89db 100644 --- a/shared/src/main/scala/scala/util/parsing/json/Parser.scala +++ b/shared/src/main/scala/scala/util/parsing/json/Parser.scala @@ -18,8 +18,6 @@ import scala.util.parsing.combinator.syntactical._ /** * A marker class for the JSON result types. - * - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") sealed abstract class JSONType { @@ -40,8 +38,6 @@ sealed abstract class JSONType { * This object defines functions that are used when converting JSONType * values into String representations. Mostly this is concerned with * proper quoting of strings. - * - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") object JSONFormat { @@ -92,8 +88,6 @@ object JSONFormat { /** * Represents a JSON Object (map). - * - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") case class JSONObject (obj : Map[String,Any]) extends JSONType { @@ -103,7 +97,6 @@ case class JSONObject (obj : Map[String,Any]) extends JSONType { /** * Represents a JSON Array (list). - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") case class JSONArray (list : List[Any]) extends JSONType { @@ -113,8 +106,6 @@ case class JSONArray (list : List[Any]) extends JSONType { /** * The main JSON Parser. - * - * @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */ @deprecated("Use The Scala Library Index to find alternatives: https://index.scala-lang.org/", "1.0.6") class Parser extends StdTokenParsers with ImplicitConversions { From 9d75808a2f88675853bce296555d2a19d180803d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 31 Aug 2021 17:12:09 -0400 Subject: [PATCH 12/24] add headers to test sources --- .../scala/scala/util/parsing/combinator/t4929.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t9010.scala | 12 ++++++++++++ .../parsing/combinator/JavaTokenParsersTest.scala | 12 ++++++++++++ .../scala/util/parsing/combinator/JsonTest.scala | 12 ++++++++++++ .../util/parsing/combinator/PackratParsersTest.scala | 12 ++++++++++++ .../util/parsing/combinator/RegexParsersTest.scala | 12 ++++++++++++ .../scala/util/parsing/combinator/UnitTestIO.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/gh45.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/gh56.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t0700.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t1100.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t1229.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t3212.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t4138.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t5514.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t5669.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t6067.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t7483.scala | 12 ++++++++++++ .../scala/scala/util/parsing/combinator/t8879.scala | 12 ++++++++++++ .../util/parsing/input/OffsetPositionTest.scala | 12 ++++++++++++ .../test/scala/scala/util/parsing/input/gh178.scala | 12 ++++++++++++ .../test/scala/scala/util/parsing/input/gh64.scala | 12 ++++++++++++ 22 files changed, 264 insertions(+) diff --git a/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala b/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala index f0bd3158..5bed139a 100644 --- a/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala +++ b/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.json._ import java.util.concurrent._ import collection.JavaConverters._ diff --git a/jvm/src/test/scala/scala/util/parsing/combinator/t9010.scala b/jvm/src/test/scala/scala/util/parsing/combinator/t9010.scala index 38ccdbfa..1dd2f00e 100644 --- a/jvm/src/test/scala/scala/util/parsing/combinator/t9010.scala +++ b/jvm/src/test/scala/scala/util/parsing/combinator/t9010.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.combinator._ import scala.util.DynamicVariable diff --git a/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala index 8db4b19f..b001fd88 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import scala.util.parsing.input.CharArrayReader diff --git a/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala index 225d5317..21f6d350 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.json._ import scala.collection.immutable.TreeMap diff --git a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala index e1bdd02a..64f2e083 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala index 8dfcbd0d..02135433 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala b/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala index 10387eb4..a95903d7 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import org.junit.Test import org.junit.Assert.assertEquals diff --git a/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala b/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala index ee685116..9a6d70dc 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import scala.util.parsing.input._ diff --git a/shared/src/test/scala/scala/util/parsing/combinator/gh56.scala b/shared/src/test/scala/scala/util/parsing/combinator/gh56.scala index 2d703332..5809c561 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/gh56.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/gh56.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import scala.language.postfixOps diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala b/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala index 97fe69ff..cc1d9bd1 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import java.io.{File,StringReader} import scala.util.parsing.combinator.Parsers diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala b/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala index 3f8c7d2b..e2a5db68 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.combinator.Parsers import scala.util.parsing.input.CharSequenceReader diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala b/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala index a4b06465..beffae6c 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.combinator.RegexParsers import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala b/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala index b48f811e..8309e438 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t4138.scala b/shared/src/test/scala/scala/util/parsing/combinator/t4138.scala index 87f8fde8..13dbd72c 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t4138.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t4138.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import org.junit.Test import org.junit.Assert.assertEquals diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala b/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala index 310dd480..ef2d465f 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.combinator.Parsers import scala.util.parsing.input.Reader import scala.util.parsing.input.Position diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala b/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala index a03f4d6a..22408a1f 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import scala.util.parsing.input.OffsetPosition diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala b/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala index 709e42e4..552c1ad8 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.combinator._ import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala b/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala index 66f8b1a5..55056c27 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.combinator import scala.util.parsing.input.{CharSequenceReader, OffsetPosition} diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t8879.scala b/shared/src/test/scala/scala/util/parsing/combinator/t8879.scala index 09a7e22d..1bece711 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t8879.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t8879.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + import scala.util.parsing.input._ import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala b/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala index 76085a83..d31bf9a3 100644 --- a/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala +++ b/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.input import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/input/gh178.scala b/shared/src/test/scala/scala/util/parsing/input/gh178.scala index 7e62d083..fefc8e9f 100644 --- a/shared/src/test/scala/scala/util/parsing/input/gh178.scala +++ b/shared/src/test/scala/scala/util/parsing/input/gh178.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.input import org.junit.Assert.assertEquals diff --git a/shared/src/test/scala/scala/util/parsing/input/gh64.scala b/shared/src/test/scala/scala/util/parsing/input/gh64.scala index 0d6da46a..ff2387c7 100644 --- a/shared/src/test/scala/scala/util/parsing/input/gh64.scala +++ b/shared/src/test/scala/scala/util/parsing/input/gh64.scala @@ -1,3 +1,15 @@ +/* + * Scala (https://www.scala-lang.org) + * + * Copyright EPFL and Lightbend, Inc. + * + * Licensed under Apache License 2.0 + * (http://www.apache.org/licenses/LICENSE-2.0). + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + package scala.util.parsing.input import org.junit.Assert._ From 9142938dff58cca4e33fdaf51ed55b17d49d6640 Mon Sep 17 00:00:00 2001 From: soya Date: Mon, 5 Aug 2019 16:16:18 +0900 Subject: [PATCH 13/24] [backport] backport #234 and #327 to 1.1.x branch fixes #233 on 1.1.x branch --- build.sbt | 10 ++- .../util/parsing/combinator/Parsers.scala | 89 +++++++++++++------ .../parsing/combinator/RegexParsers.scala | 5 +- .../combinator/JavaTokenParsersTest.scala | 8 +- .../parsing/combinator/RegexParsersTest.scala | 69 +++++++++++++- 5 files changed, 146 insertions(+), 35 deletions(-) diff --git a/build.sbt b/build.sbt index d8c7caf2..d7053be7 100644 --- a/build.sbt +++ b/build.sbt @@ -42,7 +42,15 @@ lazy val parserCombinators = crossProject(JVMPlatform, JSPlatform, NativePlatfor case _ => file(dir.getPath ++ "-2.11-2.12") } } - } + }, + mimaBinaryIssueFilters ++= { + import com.typesafe.tools.mima.core._, ProblemFilters._ + Seq( + // these are safe to exclude because they're `private[combinator]` + exclude[ReversedMissingMethodProblem]("scala.util.parsing.combinator.Parsers.Success"), + exclude[ReversedMissingMethodProblem]("scala.util.parsing.combinator.Parsers.selectLastFailure"), + ) + }, ) .jvmSettings( OsgiKeys.exportPackage := Seq(s"scala.util.parsing.*;version=${version.value}"), diff --git a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala index 6beec2ac..32cb1854 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala @@ -133,13 +133,21 @@ trait Parsers { * @param next The parser's remaining input */ case class Success[+T](result: T, override val next: Input) extends ParseResult[T] { - def map[U](f: T => U) = Success(f(result), next) - def mapPartial[U](f: PartialFunction[T, U], error: T => String): ParseResult[U] - = if(f.isDefinedAt(result)) Success(f(result), next) - else Failure(error(result), next) + def lastFailure: Option[Failure] = None - def flatMapWithNext[U](f: T => Input => ParseResult[U]): ParseResult[U] - = f(result)(next) + def map[U](f: T => U) = Success(f(result), next, lastFailure) + + def mapPartial[U](f: PartialFunction[T, U], error: T => String): ParseResult[U] = + if(f.isDefinedAt(result)) Success(f(result), next, lastFailure) + else Failure(error(result), next) + + def flatMapWithNext[U](f: T => Input => ParseResult[U]): ParseResult[U] = f(result)(next) match { + case s @ Success(result, rest) => + val failure = selectLastFailure(this.lastFailure, s.lastFailure) + Success(result, rest, failure) + case f: Failure => selectLastFailure(Some(f), lastFailure).get + case e: Error => e + } def filterWithError(p: T => Boolean, error: T => String, position: Input): ParseResult[T] = if (p(result)) this @@ -188,10 +196,16 @@ trait Parsers { /** The toString method of a Failure yields an error message. */ override def toString = "["+next.pos+"] failure: "+msg+"\n\n"+next.pos.longString - def append[U >: Nothing](a: => ParseResult[U]): ParseResult[U] = { val alt = a; alt match { - case Success(_, _) => alt - case ns: NoSuccess => if (alt.next.pos < next.pos) this else alt - }} + def append[U >: Nothing](a: => ParseResult[U]): ParseResult[U] = { + val alt = a + + alt match { + case s @ Success(result, rest) => + val failure = selectLastFailure(Some(this), s.lastFailure) + Success(result, rest, failure) + case ns: NoSuccess => if (alt.next.pos < next.pos) this else alt + } + } } /** The fatal failure case of ParseResult: contains an error-message and @@ -210,6 +224,19 @@ trait Parsers { def Parser[T](f: Input => ParseResult[T]): Parser[T] = new Parser[T]{ def apply(in: Input) = f(in) } + private[combinator] def Success[U](res: U, next: Input, failure: Option[Failure]): Success[U] = + new Success(res, next) { override val lastFailure: Option[Failure] = failure } + + private[combinator] def selectLastFailure(failure0: Option[Failure], failure1: Option[Failure]): Option[Failure] = + (failure0, failure1) match { + case (Some(f0), Some(f1)) => + if(f0.next.pos < f1.next.pos) Some(f1) + else Some(f0) + case (Some(f0), _) => Some(f0) + case (_, Some(f1)) => Some(f1) + case _ => None + } + def OnceParser[T](f: Input => ParseResult[T]): Parser[T] with OnceParser[T] = new Parser[T] with OnceParser[T] { def apply(in: Input) = f(in) } @@ -630,7 +657,7 @@ trait Parsers { */ def acceptIf(p: Elem => Boolean)(err: Elem => String): Parser[Elem] = Parser { in => if (in.atEnd) Failure("end of input", in) - else if (p(in.first)) Success(in.first, in.rest) + else if (p(in.first)) Success(in.first, in.rest, None) else Failure(err(in.first), in) } @@ -649,7 +676,7 @@ trait Parsers { */ def acceptMatch[U](expected: String, f: PartialFunction[Elem, U]): Parser[U] = Parser{ in => if (in.atEnd) Failure("end of input", in) - else if (f.isDefinedAt(in.first)) Success(f(in.first), in.rest) + else if (f.isDefinedAt(in.first)) Success(f(in.first), in.rest, None) else Failure(expected+" expected", in) } @@ -682,7 +709,7 @@ trait Parsers { * @param v The result for the parser * @return A parser that always succeeds, with the given result `v` */ - def success[T](v: T) = Parser{ in => Success(v, in) } + def success[T](v: T) = Parser{ in => Success(v, in, None) } /** A helper method that turns a `Parser` into one that will * print debugging information to stdout before and after @@ -747,19 +774,24 @@ trait Parsers { lazy val p = p0 // lazy argument val elems = new ListBuffer[T] - def continue(in: Input): ParseResult[List[T]] = { + def continue(in: Input, failure: Option[Failure]): ParseResult[List[T]] = { val p0 = p // avoid repeatedly re-evaluating by-name parser - @tailrec def applyp(in0: Input): ParseResult[List[T]] = p0(in0) match { - case Success(x, rest) => elems += x ; applyp(rest) + @tailrec def applyp(in0: Input, failure: Option[Failure]): ParseResult[List[T]] = p0(in0) match { + case s @ Success(x, rest) => + val selectedFailure = selectLastFailure(s.lastFailure, failure) + elems += x + applyp(rest, selectedFailure) case e @ Error(_, _) => e // still have to propagate error - case _ => Success(elems.toList, in0) + case f: Failure => + val selectedFailure = selectLastFailure(failure, Some(f)) + Success(elems.toList, in0, selectedFailure) } - applyp(in) + applyp(in, failure) } first(in) match { - case Success(x, rest) => elems += x ; continue(rest) + case s @ Success(x, rest) => elems += x ; continue(rest, s.lastFailure) case ns: NoSuccess => ns } } @@ -779,14 +811,14 @@ trait Parsers { val elems = new ListBuffer[T] val p0 = p // avoid repeatedly re-evaluating by-name parser - @tailrec def applyp(in0: Input): ParseResult[List[T]] = - if (elems.length == num) Success(elems.toList, in0) + @tailrec def applyp(in0: Input, failure: Option[Failure]): ParseResult[List[T]] = + if (elems.length == num) Success(elems.toList, in0, failure) else p0(in0) match { - case Success(x, rest) => elems += x ; applyp(rest) + case s @ Success(x, rest) => elems += x ; applyp(rest, s.lastFailure) case ns: NoSuccess => ns } - applyp(in) + applyp(in, None) } /** A parser generator for non-empty repetitions. @@ -868,7 +900,7 @@ trait Parsers { def not[T](p: => Parser[T]): Parser[Unit] = Parser { in => p(in) match { case Success(_, _) => Failure("Expected failure", in) - case _ => Success((), in) + case _ => Success((), in, None) } } @@ -882,7 +914,7 @@ trait Parsers { */ def guard[T](p: => Parser[T]): Parser[T] = Parser { in => p(in) match{ - case s@ Success(s1,_) => Success(s1, in) + case s@ Success(s1,_) => Success(s1, in, s.lastFailure) case e => e } } @@ -897,7 +929,7 @@ trait Parsers { */ def positioned[T <: Positional](p: => Parser[T]): Parser[T] = Parser { in => p(in) match { - case Success(t, in1) => Success(if (t.pos == NoPosition) t setPos in.pos else t, in1) + case s @ Success(t, in1) => Success(if (t.pos == NoPosition) t setPos in.pos else t, in1, s.lastFailure) case ns: NoSuccess => ns } } @@ -915,7 +947,10 @@ trait Parsers { def apply(in: Input) = p(in) match { case s @ Success(out, in1) => if (in1.atEnd) s - else Failure("end of input expected", in1) + else s.lastFailure match { + case Some(failure) => failure + case _ => Failure("end of input expected", in1) + } case ns => ns } } diff --git a/shared/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala index 0fe21982..e458a767 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/RegexParsers.scala @@ -94,7 +94,7 @@ trait RegexParsers extends Parsers { j += 1 } if (i == s.length) - Success(source.subSequence(start, j).toString, in.drop(j - offset)) + Success(source.subSequence(start, j).toString, in.drop(j - offset), None) else { val found = if (start == source.length()) "end of source" else "'"+source.charAt(start)+"'" Failure("'"+s+"' expected but "+found+" found", in.drop(start - offset)) @@ -111,7 +111,8 @@ trait RegexParsers extends Parsers { (r findPrefixMatchOf (new SubSequence(source, start))) match { case Some(matched) => Success(source.subSequence(start, start + matched.end).toString, - in.drop(start + matched.end - offset)) + in.drop(start + matched.end - offset), + None) case None => val found = if (start == source.length()) "end of source" else "'"+source.charAt(start)+"'" Failure("string matching regex '"+r+"' expected but "+found+" found", in.drop(start - offset)) diff --git a/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala index b001fd88..a709d553 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala @@ -45,7 +45,7 @@ class JavaTokenParsersTest { def parseFailure(s: String, errorColPos: Int): Unit = { val parseResult = parseAll(ident, s) parseResult match { - case Failure(_, next) => + case Failure(msg, next) => val pos = next.pos assertEquals(1, pos.line) assertEquals(errorColPos, pos.column) @@ -65,7 +65,7 @@ class JavaTokenParsersTest { parseFailure("with-s", 5) // we♥scala parseFailure("we\u2665scala", 3) - parseFailure("with space", 6) + parseFailure("with space", 5) } @Test @@ -87,7 +87,7 @@ class JavaTokenParsersTest { case e @ Failure(message, next) => assertEquals(next.pos.line, 1) assertEquals(next.pos.column, 7) - assert(message.endsWith(s"end of input expected")) + assert(message.endsWith("string matching regex '(?i)AND' expected but 's' found")) case _ => sys.error(parseResult1.toString) } @@ -111,7 +111,7 @@ class JavaTokenParsersTest { case Failure(message, next) => assertEquals(next.pos.line, 1) assertEquals(next.pos.column, 1) - assert(message.endsWith(s"end of input expected")) + assert(message.endsWith(s"identifier expected but '-' found")) case _ => sys.error(parseResult.toString) } diff --git a/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala index 02135433..0dfa743f 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala @@ -13,7 +13,7 @@ package scala.util.parsing.combinator import org.junit.Test -import org.junit.Assert.assertEquals +import org.junit.Assert.{ assertEquals, assertTrue } class RegexParsersTest { @Test @@ -112,4 +112,71 @@ class RegexParsersTest { val success = parseAll(twoWords, "first second").asInstanceOf[Success[(String, String)]] assertEquals(("second", "first"), success.get) } + + @Test + def hierarchicalRepSuccess: Unit = { + case class Node(a: String, b: String) + + object parser extends RegexParsers { + def top: Parser[List[List[Node]]] = rep(nodes) + def nodes: Parser[List[Node]] = "{" ~> rep(node) <~ "}" + def node: Parser[Node] = "[a-z]+".r ~ ":" ~ "[a-z]+".r ^^ { case a ~ _ ~ b => Node(a, b) } + } + + import parser._ + + val success0 = parseAll(top, "{ a : b c : d}").get + assertEquals(List(List(Node("a", "b"), Node("c", "d"))), success0) + val success1 = parseAll(top, "{ a : b } { c : d }").get + assertEquals(List(List(Node("a", "b")), List(Node("c", "d"))), success1) + val success2 = parseAll(top, "{} {}").get + assertEquals(List(List(), List()), success2) + val success3 = parseAll(top, "").get + assertEquals(List(), success3) + } + + @Test + def hierarchicalRepFailure: Unit = { + case class Node(a: String, b: String) + + object parser extends RegexParsers { + def top: Parser[List[List[Node]]] = rep(nodes) + def nodes: Parser[List[Node]] = "{" ~> rep(node) <~ "}" + def node: Parser[Node] = "[a-z]+".r ~ ":" ~ "[a-z]+".r ^^ { case a ~ _ ~ b => Node(a, b) } + } + + def test(src: String, expect: String, column: Int): Unit = { + import parser._ + val result = parseAll(top, src) + result match { + case Failure(msg, next) => + assertEquals(column, next.pos.column) + assertEquals(expect, msg) + case _ => + sys.error(result.toString) + } + } + + test("{ a : b c : }", "string matching regex '[a-z]+' expected but '}' found", 13) + test("{", "'}' expected but end of source found", 2) + } + + @Test + def ifElseTest: Unit = { + object parser extends RegexParsers { + def top: Parser[List[Unit]] = rep(ifelse) + def ifelse: Parser[Unit] = "IF" ~ condition ~ "THEN" ~ "1"~ "END" ^^ { _ => } + def condition: Parser[String] = "TRUE" | "FALSE" + } + + import parser._ + val res = parseAll(top, "IF FALSE THEN 1 IF TRUE THEN 1 END") + res match { + case Failure(msg, next) => + assertEquals(17, next.pos.column) + assertEquals("'END' expected but 'I' found", msg) + case _ => + sys.error(res.toString) + } + } } From c245e6e1fcca53b26add3358b2c8398de5a3f160 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 29 Oct 2020 11:58:47 -0700 Subject: [PATCH 14/24] make some warnings go away --- .../scala/util/parsing/combinator/PackratParsers.scala | 6 +++--- .../main/scala/scala/util/parsing/combinator/Parsers.scala | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala index 3b06ab13..8c42d96b 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/PackratParsers.scala @@ -68,11 +68,11 @@ trait PackratParsers extends Parsers { */ private[PackratParsers] val cache = mutable.HashMap.empty[(Parser[_], Position), MemoEntry[_]] - private[PackratParsers] def getFromCache[T](p: Parser[T]): Option[MemoEntry[T]] = { - cache.get((p, pos)).asInstanceOf[Option[MemoEntry[T]]] + private[PackratParsers] def getFromCache[T2](p: Parser[T2]): Option[MemoEntry[T2]] = { + cache.get((p, pos)).asInstanceOf[Option[MemoEntry[T2]]] } - private[PackratParsers] def updateCacheAndGet[T](p: Parser[T], w: MemoEntry[T]): MemoEntry[T] = { + private[PackratParsers] def updateCacheAndGet[T2](p: Parser[T2], w: MemoEntry[T2]): MemoEntry[T2] = { cache.put((p, pos),w) w } diff --git a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala index 32cb1854..357fa3ea 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala @@ -261,7 +261,7 @@ trait Parsers { = withFilter(p) def withFilter(p: T => Boolean): Parser[T] - = Parser{ in => this(in) filterWithError(p, "Input doesn't match filter: "+_, in)} + = Parser{ in => this(in).filterWithError(p, "Input doesn't match filter: "+_, in)} // no filter yet, dealing with zero is tricky! From 1b439999f32801dc858847996f08915721ba621d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 29 Oct 2020 13:35:28 -0700 Subject: [PATCH 15/24] adapt to scala/scala#9292 --- .../main/scala/scala/util/parsing/input/CharArrayReader.scala | 4 +--- .../main/scala/scala/util/parsing/input/PagedSeqReader.scala | 2 +- .../src/test/scala/scala/util/parsing/combinator/t7483.scala | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala b/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala index 0469cd11..ae0628b0 100644 --- a/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/CharArrayReader.scala @@ -25,8 +25,6 @@ object CharArrayReader { * @param chars an array of characters * @param index starting offset into the array; the first element returned will be `source(index)` */ -class CharArrayReader(chars: Array[Char], index: Int) extends CharSequenceReader(chars, index) { - +class CharArrayReader(chars: Array[Char], index: Int) extends CharSequenceReader(java.nio.CharBuffer.wrap(chars), index) { def this(chars: Array[Char]) = this(chars, 0) - } diff --git a/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala b/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala index 85a7e209..4bdd7fd0 100644 --- a/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala +++ b/shared/src/main/scala/scala/util/parsing/input/PagedSeqReader.scala @@ -29,7 +29,7 @@ class PagedSeqReader(seq: PagedSeq[Char], override val offset: Int) extends Reader[Char] { outer => import PagedSeqReader._ - override val source: java.lang.CharSequence = seq + override val source: java.lang.CharSequence = new SeqCharSequence(seq) /** Construct a `PagedSeqReader` with its first element at * `source(0)` and position `(1,1)`. diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala b/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala index 55056c27..07cfe395 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t7483.scala @@ -19,7 +19,7 @@ import org.junit.Assert.assertEquals class t7483 { val s = "foo\nbar" - val reader = new CharSequenceReader(s.toCharArray(), 0) + val reader = new CharSequenceReader(s, 0) val p = reader.pos.asInstanceOf[OffsetPosition] @Test From 9c3b05962bb2b6b1fdacc6b7903b933ac99a903f Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 4 Dec 2020 12:26:06 -0800 Subject: [PATCH 16/24] code changes for Scala 2.13.4 upgrade --- .../main/scala/scala/util/parsing/combinator/Parsers.scala | 6 ++++-- .../scala/util/parsing/combinator/PackratParsersTest.scala | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala index 357fa3ea..8d2dc30f 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala @@ -404,8 +404,10 @@ trait Parsers { val res1 = Parser.this(in) val res2 = q(in) - (res1, res2) match { - case (s1 @ Success(_, next1), s2 @ Success(_, next2)) => if (next2.pos < next1.pos) s1 else s2 + // compiler thinks match isn't exhaustive; perhaps it's right, but does that mean there's a bug here? + // that's not clear to me, so for now let's just `@unchecked` it + ((res1, res2): @unchecked) match { + case (s1 @ Success(_, next1), s2 @ Success(_, next2)) => if (next2.pos < next1.pos || next2.pos == next1.pos) s1 else s2 case (s1 @ Success(_, _), _) => s1 case (_, s2 @ Success(_, _)) => s2 case (e1 @ Error(_, _), _) => e1 diff --git a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala index 64f2e083..3cc662a9 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala @@ -195,7 +195,8 @@ private object grammars3 extends StandardTokenParsers with PackratParsers { | success(Nil) ) + @annotation.nowarn // Some(xs) in pattern isn't exhaustive def repMany1[T](p: => Parser[T], q: => Parser[T]): Parser[List[T]] = - p~opt(repMany(p,q))~q ^^ {case x~Some(xs)~y => x::xs:::(y::Nil)} + p~opt(repMany(p,q))~q ^^ {case x~Some(xs)~y => x::xs:::(y::Nil)} } From 327a951650fcb87617abf65da3f3ce2b3977a3c2 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sun, 8 Mar 2020 14:01:27 +0100 Subject: [PATCH 17/24] Indent properly --- .../parsing/combinator/PackratParsersTest.scala | 16 ++++++++-------- .../scala/util/parsing/combinator/t1100.scala | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala index 3cc662a9..84a530a2 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala @@ -151,14 +151,14 @@ private object grammars1 extends StandardTokenParsers with PackratParsers { */ - val term: PackratParser[Int] = (term~("+"~>fact) ^^ {case x~y => x+y} - |term~("-"~>fact) ^^ {case x~y => x-y} - |fact) - - val fact: PackratParser[Int] = (fact~("*"~>numericLit) ^^ {case x~y => x*y.toInt} - |fact~("/"~>numericLit) ^^ {case x~y => x/y.toInt} - |"("~>term<~")" - |numericLit ^^ {_.toInt}) + val term: PackratParser[Int] = (term~("+"~>fact) ^^ {case x~y => x+y} + |term~("-"~>fact) ^^ {case x~y => x-y} + |fact) + + val fact: PackratParser[Int] = (fact~("*"~>numericLit) ^^ {case x~y => x*y.toInt} + |fact~("/"~>numericLit) ^^ {case x~y => x/y.toInt} + |"("~>term<~")" + |numericLit ^^ {_.toInt}) } private object grammars2 extends StandardTokenParsers with PackratParsers { diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala b/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala index e2a5db68..57eb5686 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t1100.scala @@ -24,7 +24,7 @@ class T1100 { def p1: Parser[Char] = accept('a') | err("errors are propagated") } -val expected = """[1.4] error: errors are propagated + val expected = """[1.4] error: errors are propagated aaab ^""" From 96e8a8872c7bf2d1c5b9ae2169155414fd4de522 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sun, 8 Mar 2020 14:07:22 +0100 Subject: [PATCH 18/24] Add cases for exhaustivity --- .../scala/util/parsing/combinator/PackratParsersTest.scala | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala index 84a530a2..19e3efb4 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala @@ -28,6 +28,8 @@ class PackratParsersTest { def extractResult(r : ParseResult[Int]): Int = r match { case Success(a,_) => a case NoSuccess(a,_) => sys.error(a) + case Failure(a, _) => sys.error(a) + case Error(a, _) => sys.error(a) } def check(expected: Int, expr: String): Unit = { val parseResult = head(new lexical.Scanner(expr)) @@ -82,6 +84,8 @@ class PackratParsersTest { def extractResult(r : ParseResult[Int]): Int = r match { case Success(a,_) => a case NoSuccess(a,_) => sys.error(a) + case Failure(a, _) => sys.error(a) + case Error(a, _) => sys.error(a) } def check(expected: Int, expr: String): Unit = { val parseResult = head(new lexical.Scanner(expr)) @@ -105,6 +109,8 @@ class PackratParsersTest { def extractResult(r: ParseResult[AnBnCnResult]): AnBnCnResult = r match { case Success(a,_) => a case NoSuccess(a,_) => sys.error(a) + case Failure(a, _) => sys.error(a) + case Error(a, _) => sys.error(a) } def threeLists(as: List[Symbol], bs: List[Symbol], cs: List[Symbol]): AnBnCnResult = { val as1 = as.map(_.name) From ce3152b3cc26dad603d4e7570c9099fb0c55e620 Mon Sep 17 00:00:00 2001 From: Philippus Date: Mon, 24 Jun 2019 10:21:32 +0200 Subject: [PATCH 19/24] Replace deprecated symbol literals --- .../util/parsing/combinator/PackratParsersTest.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala index 19e3efb4..fc7b8208 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala @@ -126,11 +126,11 @@ class PackratParsersTest { assertEquals(expected, result) } - assertSuccess(List('a, 'b), List('a), List('b, 'c), "a b c") - assertSuccess(List('a, 'a, 'b, 'b), List('a, 'a), List('b, 'b, 'c, 'c), "a a b b c c") - assertSuccess(List('a, 'a, 'a, 'b, 'b, 'b), List('a, 'a, 'a), List('b, 'b, 'b, 'c, 'c, 'c), + assertSuccess(List(Symbol("a"), Symbol("b")), List(Symbol("a")), List(Symbol("b"), Symbol("c")), "a b c") + assertSuccess(List(Symbol("a"), Symbol("a"), Symbol("b"), Symbol("b")), List(Symbol("a"), Symbol("a")), List(Symbol("b"), Symbol("b"), Symbol("c"), Symbol("c")), "a a b b c c") + assertSuccess(List(Symbol("a"), Symbol("a"), Symbol("a"), Symbol("b"), Symbol("b"), Symbol("b")), List(Symbol("a"), Symbol("a"), Symbol("a")), List(Symbol("b"), Symbol("b"), Symbol("b"), Symbol("c"), Symbol("c"), Symbol("c")), "a a a b b b c c c") - assertSuccess(List('a, 'a, 'a, 'a, 'b, 'b, 'b, 'b), List('a, 'a, 'a, 'a), List('b, 'b, 'b, 'b, 'c, 'c, 'c, 'c), + assertSuccess(List(Symbol("a"), Symbol("a"), Symbol("a"), Symbol("a"), Symbol("b"), Symbol("b"), Symbol("b"), Symbol("b")), List(Symbol("a"), Symbol("a"), Symbol("a"), Symbol("a")), List(Symbol("b"), Symbol("b"), Symbol("b"), Symbol("b"), Symbol("c"), Symbol("c"), Symbol("c"), Symbol("c")), "a a a a b b b b c c c c") def assertFailure(expectedFailureMsg: String, input: String): Unit = { From eaf20d38e7d2c9f145f9ecf2a0c15beb4665bec9 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 13 May 2022 14:39:30 +0100 Subject: [PATCH 20/24] update 1.1.x sources for current build settings --- .../scala/util/parsing/combinator/t4929.scala | 1 + .../util/parsing/combinator/JsonTest.scala | 19 ++++++++++--------- .../util/parsing/combinator/UnitTestIO.scala | 1 + 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala b/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala index 5bed139a..6c4bd98e 100644 --- a/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala +++ b/jvm/src/test/scala/scala/util/parsing/combinator/t4929.scala @@ -16,6 +16,7 @@ import collection.JavaConverters._ import org.junit.Test +@deprecated("", "") class t4929 { val LIMIT = 2000 diff --git a/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala index 21f6d350..f33d35aa 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JsonTest.scala @@ -16,6 +16,7 @@ import scala.collection.immutable.TreeMap import org.junit.Test import org.junit.Assert.{assertEquals, assertTrue} +@deprecated("", "") class JsonTest { /* This method converts parsed JSON back into real JSON notation with objects in * sorted-key order. Not required by the spec, but it allows us to do a stable @@ -43,23 +44,23 @@ class JsonTest { } // For this one, just parsing should be considered a pass - def printJSON(given : String) : Unit = - assertTrue("Parse failed for \"%s\"".format(given), (JSON parseRaw given).isDefined) + def printJSON(`given` : String) : Unit = + assertTrue("Parse failed for \"%s\"".format(`given`), (JSON parseRaw `given`).isDefined) // For this usage, do a raw parse (to JSONObject/JSONArray) - def printJSON(given : String, expected : JSONType): Unit = { - printJSON(given, JSON.parseRaw, expected) + def printJSON(`given` : String, expected : JSONType): Unit = { + printJSON(`given`, JSON.parseRaw, expected) } // For this usage, do a raw parse (to JSONType and subclasses) - def printJSONFull(given : String, expected : Any): Unit = { - printJSON(given, JSON.parseFull, expected) + def printJSONFull(`given` : String, expected : Any): Unit = { + printJSON(`given`, JSON.parseFull, expected) } // For this usage, do configurable parsing so that you can do raw if desired - def printJSON[T](given : String, parser : String => T, expected : Any): Unit = { - parser(given) match { - case None => assertTrue("Parse failed for \"%s\"".format(given), false) + def printJSON[T](`given` : String, parser : String => T, expected : Any): Unit = { + parser(`given`) match { + case None => assertTrue("Parse failed for \"%s\"".format(`given`), false) case Some(parsed) => if (parsed != expected) { val eStr = sortJSON(expected).toString val pStr = sortJSON(parsed).toString diff --git a/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala b/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala index a95903d7..7a0dd27b 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/UnitTestIO.scala @@ -13,6 +13,7 @@ import org.junit.Test import org.junit.Assert.assertEquals +@deprecated("", "") class UnitTestIO { @Test From c4b03571f883ba7d6826b9000ea80a86242a684d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Sun, 20 Jun 2021 17:07:30 -0700 Subject: [PATCH 21/24] remove antiquated @migration annotations --- .../util/parsing/combinator/JavaTokenParsers.scala | 3 --- .../scala/scala/util/parsing/combinator/Parsers.scala | 10 ---------- 2 files changed, 13 deletions(-) diff --git a/shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala index 5051efa2..42af31c4 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/JavaTokenParsers.scala @@ -13,8 +13,6 @@ package scala package util.parsing.combinator -import scala.annotation.migration - /** `JavaTokenParsers` differs from [[scala.util.parsing.combinator.RegexParsers]] * by adding the following definitions: * @@ -54,7 +52,6 @@ trait JavaTokenParsers extends RegexParsers { * of the letters `b`, `f`, `n`, `r` or `t` * - `\` followed by `u` followed by four hexadecimal digits */ - @migration("`stringLiteral` allows escaping single and double quotes, but not forward slashes any longer.", "2.10.0") def stringLiteral: Parser[String] = ("\""+"""([^"\x00-\x1F\x7F\\]|\\[\\'"bfnrt]|\\u[a-fA-F0-9]{4})*"""+"\"").r /** A number following the rules of `decimalNumber`, with the following diff --git a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala index 8d2dc30f..b40f8b10 100644 --- a/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala +++ b/shared/src/main/scala/scala/util/parsing/combinator/Parsers.scala @@ -16,7 +16,6 @@ package util.parsing.combinator import scala.util.parsing.input._ import scala.collection.mutable.ListBuffer import scala.annotation.tailrec -import scala.annotation.migration import scala.language.implicitConversions // TODO: better error handling (labelling like parsec's ) @@ -265,7 +264,6 @@ trait Parsers { // no filter yet, dealing with zero is tricky! - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def append[U >: T](p0: => Parser[U]): Parser[U] = { lazy val p = p0 // lazy argument Parser{ in => this(in) append p(in)} } @@ -284,7 +282,6 @@ trait Parsers { * but easier to pattern match on) that contains the result of `p` and * that of `q`. The resulting parser fails if either `p` or `q` fails. */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def ~ [U](q: => Parser[U]): Parser[~[T, U]] = { lazy val p = q // lazy argument (for(a <- this; b <- p) yield new ~(a,b)).named("~") } @@ -297,7 +294,6 @@ trait Parsers { * succeeds -- evaluated at most once, and only when necessary. * @return a `Parser` that -- on success -- returns the result of `q`. */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def ~> [U](q: => Parser[U]): Parser[U] = { lazy val p = q // lazy argument (for(a <- this; b <- p) yield b).named("~>") } @@ -312,7 +308,6 @@ trait Parsers { * @param q a parser that will be executed after `p` (this parser) succeeds -- evaluated at most once, and only when necessary * @return a `Parser` that -- on success -- returns the result of `p`. */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def <~ [U](q: => Parser[U]): Parser[T] = { lazy val p = q // lazy argument (for(a <- this; b <- p) yield a).named("<~") } @@ -355,7 +350,6 @@ trait Parsers { * @return a `Parser` that -- on success -- reutrns the result of `q`. * The resulting parser fails if either `p` or `q` fails, this failure is fatal. */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def ~>! [U](q: => Parser[U]): Parser[U] = { lazy val p = q // lazy argument OnceParser { (for(a <- this; b <- commit(p)) yield b).named("~>!") } } @@ -369,7 +363,6 @@ trait Parsers { * @return a `Parser` that -- on success -- reutrns the result of `p`. * The resulting parser fails if either `p` or `q` fails, this failure is fatal. */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def <~! [U](q: => Parser[U]): Parser[T] = { lazy val p = q // lazy argument OnceParser { (for(a <- this; b <- commit(p)) yield a).named("<~!") } } @@ -397,7 +390,6 @@ trait Parsers { * @param q0 a parser that accepts if p consumes less characters. -- evaluated at most once, and only when necessary * @return a `Parser` that returns the result of the parser consuming the most characters (out of `p` and `q`). */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def ||| [U >: T](q0: => Parser[U]): Parser[U] = new Parser[U] { lazy val q = q0 // lazy argument def apply(in: Input) = { @@ -434,7 +426,6 @@ trait Parsers { * @param v The new result for the parser, evaluated at most once (if `p` succeeds), not evaluated at all if `p` fails. * @return a parser that has the same behaviour as the current parser, but whose successful result is `v` */ - @migration("The call-by-name argument is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def ^^^ [U](v: => U): Parser[U] = new Parser[U] { lazy val v0 = v // lazy argument def apply(in: Input) = Parser.this(in) map (x => v0) @@ -771,7 +762,6 @@ trait Parsers { * @return A parser that returns a list of results produced by first applying `f` and then * repeatedly `p` to the input (it only succeeds if `f` matches). */ - @migration("The `p0` call-by-name arguments is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.", "2.9.0") def rep1[T](first: => Parser[T], p0: => Parser[T]): Parser[List[T]] = Parser { in => lazy val p = p0 // lazy argument val elems = new ListBuffer[T] From c8221d43c3e5a401cc33193bfd84644f0cfe8324 Mon Sep 17 00:00:00 2001 From: Philippus Date: Sun, 8 Mar 2020 14:00:21 +0100 Subject: [PATCH 22/24] Add import clauses for ImplicitConversions --- .../scala/util/parsing/combinator/JavaTokenParsersTest.scala | 1 + .../scala/util/parsing/combinator/PackratParsersTest.scala | 1 + .../scala/scala/util/parsing/combinator/RegexParsersTest.scala | 2 ++ shared/src/test/scala/scala/util/parsing/combinator/gh45.scala | 1 + shared/src/test/scala/scala/util/parsing/combinator/t0700.scala | 1 + shared/src/test/scala/scala/util/parsing/combinator/t1229.scala | 1 + shared/src/test/scala/scala/util/parsing/combinator/t3212.scala | 1 + shared/src/test/scala/scala/util/parsing/combinator/t5514.scala | 1 + shared/src/test/scala/scala/util/parsing/combinator/t5669.scala | 1 + shared/src/test/scala/scala/util/parsing/combinator/t6067.scala | 1 + .../scala/scala/util/parsing/input/OffsetPositionTest.scala | 1 + shared/src/test/scala/scala/util/parsing/input/gh178.scala | 1 + shared/src/test/scala/scala/util/parsing/input/gh64.scala | 1 + 13 files changed, 14 insertions(+) diff --git a/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala index a709d553..486e2e1d 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/JavaTokenParsersTest.scala @@ -12,6 +12,7 @@ package scala.util.parsing.combinator +import scala.language.implicitConversions import scala.util.parsing.input.CharArrayReader import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala index fc7b8208..e3d162b5 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/PackratParsersTest.scala @@ -16,6 +16,7 @@ import org.junit.Test import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue +import scala.language.implicitConversions import scala.util.parsing.combinator.syntactical.StandardTokenParsers class PackratParsersTest { diff --git a/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala index 0dfa743f..92b6adc8 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/RegexParsersTest.scala @@ -12,6 +12,8 @@ package scala.util.parsing.combinator +import scala.language.implicitConversions + import org.junit.Test import org.junit.Assert.{ assertEquals, assertTrue } diff --git a/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala b/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala index 9a6d70dc..e3cf2bf6 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/gh45.scala @@ -12,6 +12,7 @@ package scala.util.parsing.combinator +import scala.language.implicitConversions import scala.util.parsing.input._ import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala b/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala index cc1d9bd1..7e7ac812 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t0700.scala @@ -12,6 +12,7 @@ import java.io.{File,StringReader} +import scala.language.implicitConversions import scala.util.parsing.combinator.Parsers import scala.util.parsing.input.{CharArrayReader, StreamReader} diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala b/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala index beffae6c..881aed0f 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t1229.scala @@ -14,6 +14,7 @@ import scala.util.parsing.combinator.RegexParsers import org.junit.Test import org.junit.Assert.assertEquals +import scala.language.implicitConversions class t1229 extends RegexParsers { val number = """0|[1-9]\d*""".r ^^ { _.toInt } diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala b/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala index 8309e438..e5cfe125 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t3212.scala @@ -14,6 +14,7 @@ package scala.util.parsing.combinator import org.junit.Test import org.junit.Assert.assertEquals +import scala.language.implicitConversions class t3212 extends RegexParsers { diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala b/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala index ef2d465f..75622749 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t5514.scala @@ -10,6 +10,7 @@ * additional information regarding copyright ownership. */ +import scala.language.implicitConversions import scala.util.parsing.combinator.Parsers import scala.util.parsing.input.Reader import scala.util.parsing.input.Position diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala b/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala index 22408a1f..1bdb240d 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t5669.scala @@ -12,6 +12,7 @@ package scala.util.parsing.combinator +import scala.language.implicitConversions import scala.util.parsing.input.OffsetPosition import org.junit.Test diff --git a/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala b/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala index 552c1ad8..6381e2c8 100644 --- a/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala +++ b/shared/src/test/scala/scala/util/parsing/combinator/t6067.scala @@ -14,6 +14,7 @@ import scala.util.parsing.combinator._ import org.junit.Test import org.junit.Assert.assertEquals +import scala.language.implicitConversions class t6067 extends RegexParsers { object TestParser extends RegexParsers { diff --git a/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala b/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala index d31bf9a3..d339b98b 100644 --- a/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala +++ b/shared/src/test/scala/scala/util/parsing/input/OffsetPositionTest.scala @@ -14,6 +14,7 @@ package scala.util.parsing.input import org.junit.Test import org.junit.Assert.assertEquals +import scala.language.implicitConversions class OffsetPositionTest { @Test diff --git a/shared/src/test/scala/scala/util/parsing/input/gh178.scala b/shared/src/test/scala/scala/util/parsing/input/gh178.scala index fefc8e9f..83c80bee 100644 --- a/shared/src/test/scala/scala/util/parsing/input/gh178.scala +++ b/shared/src/test/scala/scala/util/parsing/input/gh178.scala @@ -14,6 +14,7 @@ package scala.util.parsing.input import org.junit.Assert.assertEquals import org.junit.Test +import scala.language.implicitConversions class gh178 { diff --git a/shared/src/test/scala/scala/util/parsing/input/gh64.scala b/shared/src/test/scala/scala/util/parsing/input/gh64.scala index ff2387c7..188efed1 100644 --- a/shared/src/test/scala/scala/util/parsing/input/gh64.scala +++ b/shared/src/test/scala/scala/util/parsing/input/gh64.scala @@ -14,6 +14,7 @@ package scala.util.parsing.input import org.junit.Assert._ import org.junit.Test +import scala.language.implicitConversions class gh64 { From 0bef4f50529077b841ac4973a29f28256556924c Mon Sep 17 00:00:00 2001 From: Philippus Date: Sat, 13 Apr 2019 09:15:07 +0200 Subject: [PATCH 23/24] Prefix java.util.AbstractMap --- .../scala/util/parsing/input/PositionCache.scala | 14 +++++++------- .../scala/util/parsing/input/PositionCache.scala | 4 +--- .../scala/util/parsing/input/PositionCache.scala | 14 +++++++------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/js/src/main/scala/scala/util/parsing/input/PositionCache.scala b/js/src/main/scala/scala/util/parsing/input/PositionCache.scala index 912f10bf..35aedb66 100644 --- a/js/src/main/scala/scala/util/parsing/input/PositionCache.scala +++ b/js/src/main/scala/scala/util/parsing/input/PositionCache.scala @@ -12,14 +12,14 @@ package scala.util.parsing.input -import java.util.{AbstractMap, Collections} +import java.util.Collections private[input] trait PositionCache { - private[input] lazy val indexCache: java.util.Map[CharSequence,Array[Int]] = new AbstractMap[CharSequence, Array[Int]] { + private[input] lazy val indexCache: java.util.Map[CharSequence,Array[Int]] = + new java.util.AbstractMap[CharSequence, Array[Int]] { + override def entrySet() = Collections.emptySet() - override def entrySet() = Collections.emptySet() - - // the /dev/null of Maps - override def put(ch: CharSequence, a: Array[Int]) = null - } + // 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 index 3ead08f9..5fccbd9d 100644 --- a/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala +++ b/jvm/src/main/scala/scala/util/parsing/input/PositionCache.scala @@ -12,13 +12,11 @@ package scala.util.parsing.input -import java.util.WeakHashMap - 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]] + override def initialValue = new java.util.WeakHashMap[CharSequence, Array[Int]] } private[input] def indexCache = indexCacheTL.get diff --git a/native/src/main/scala/scala/util/parsing/input/PositionCache.scala b/native/src/main/scala/scala/util/parsing/input/PositionCache.scala index 102f87ff..818ab84f 100644 --- a/native/src/main/scala/scala/util/parsing/input/PositionCache.scala +++ b/native/src/main/scala/scala/util/parsing/input/PositionCache.scala @@ -13,14 +13,14 @@ package scala.util.parsing.input import java.lang.CharSequence -import java.util.{AbstractMap, Collections} +import java.util.Collections private[input] trait PositionCache { - private[input] lazy val indexCache: java.util.Map[CharSequence,Array[Int]] = new AbstractMap[CharSequence, Array[Int]] { + private[input] lazy val indexCache: java.util.Map[CharSequence,Array[Int]] = + new java.util.AbstractMap[CharSequence, Array[Int]] { + override def entrySet() = Collections.emptySet() - override def entrySet() = Collections.emptySet() - - // the /dev/null of Maps - override def put(ch: CharSequence, a: Array[Int]) = null - } + // the /dev/null of Maps + override def put(ch: CharSequence, a: Array[Int]) = null + } } From 0b6d77efdc5b3b2c054c1966825a6da3c447cf46 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Fri, 13 May 2022 14:07:33 +0100 Subject: [PATCH 24/24] backport build changes from main to 1.1.x --- .github/workflows/ci.yml | 25 +++ .github/workflows/release.yml | 21 +++ .gitignore | 10 +- .mailmap | 2 + .travis.yml | 34 ----- CODE_OF_CONDUCT.md | 7 + NOTICE | 4 +- README.md | 2 +- build.sbt | 142 ++++++++++++------ build.sh | 56 ------- project/build.properties | 2 +- project/plugins.sbt | 16 +- .../input/ScalaVersionSpecificPagedSeq.scala | 0 13 files changed, 171 insertions(+), 150 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .travis.yml create mode 100644 CODE_OF_CONDUCT.md delete mode 100755 build.sh rename shared/src/main/{scala-2.11-2.12 => scala-2.13-}/scala/util/parsing/input/ScalaVersionSpecificPagedSeq.scala (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..de9d1917 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,25 @@ +name: test +on: + push: + branches: + - main + pull_request: +jobs: + test: + strategy: + fail-fast: false + matrix: + java: [8, 11, 17] + scala: [2.11.12, 2.12.15, 2.13.8] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: coursier/cache-action@v6 + - uses: actions/setup-java@v2 + with: + distribution: temurin + java-version: ${{matrix.java}} + - name: Test + run: sbt ++${{matrix.scala}} test headerCheck versionPolicyCheck package diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..d69ab720 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,21 @@ +name: Release +on: + push: + tags: ["*"] +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-java@v2 + with: + distribution: temurin + java-version: 8 + - run: sbt versionCheck ci-release + env: + PGP_PASSPHRASE: ${{secrets.PGP_PASSPHRASE}} + PGP_SECRET: ${{secrets.PGP_SECRET}} + SONATYPE_PASSWORD: ${{secrets.SONATYPE_PASSWORD}} + SONATYPE_USERNAME: ${{secrets.SONATYPE_USERNAME}} diff --git a/.gitignore b/.gitignore index f236bdfa..3ac1f978 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,12 @@ build.properties /.idea /.settings +# vscode, metals +.bloop/ +/.metals/ +/.vscode/ +/project/**/metals.sbt + # bak files produced by ./cleanup-commit *.bak @@ -42,4 +48,6 @@ qbin # Mac specific, but that is common enough a dev platform to warrant inclusion. .DS_Store -target/ \ No newline at end of file +# sbt +target/ +/.bsp/ \ No newline at end of file diff --git a/.mailmap b/.mailmap index e461c0cd..af49005d 100644 --- a/.mailmap +++ b/.mailmap @@ -58,9 +58,11 @@ Pavel Pavlov Philipp Haller Philipp Haller Philippe Altherr +Philippus Baalman Raphaël Noir Roland Kuhn Rüdiger Klaehn +Scala Steward Sebastian Hack Simon Ochsenreither Stepan Koltsov diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 46d28257..00000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -version: ~> 1.0 # needed for imports - -import: scala/scala-dev:travis/default.yml - -language: scala - -scala: - - 2.11.12 - - 2.12.10 - - 2.13.1 - -env: - - ADOPTOPENJDK=8 SCALAJS_VERSION= - - ADOPTOPENJDK=8 SCALAJS_VERSION=0.6.32 - - ADOPTOPENJDK=8 SCALAJS_VERSION=1.0.0 - - ADOPTOPENJDK=11 SCALAJS_VERSION= - -matrix: - include: - - scala: 2.11.12 - env: ADOPTOPENJDK=8 SCALANATIVE_VERSION=0.3.9 - - scala: 2.11.12 - env: ADOPTOPENJDK=8 SCALANATIVE_VERSION=0.4.0-M2 - -install: - - git fetch --tags # get all tags for sbt-dynver - -script: ./build.sh - -notifications: - email: - - adriaan.moors@lightbend.com - - seth.tisue@lightbend.com - - antoine@gourlay.fr diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..0511f212 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,7 @@ +all repositories in these organizations: + +* [scala](https://github.com/scala) +* [scalacenter](https://github.com/scalacenter) +* [lampepfl](https://github.com/lampepfl) + +are covered by the Scala Code of Conduct: https://scala-lang.org/conduct/ diff --git a/NOTICE b/NOTICE index bed5ab7d..61f8bc83 100644 --- a/NOTICE +++ b/NOTICE @@ -1,6 +1,6 @@ Scala parser combinators -Copyright (c) 2002-2019 EPFL -Copyright (c) 2011-2019 Lightbend, Inc. +Copyright (c) 2002-2022 EPFL +Copyright (c) 2011-2022 Lightbend, Inc. Scala includes software developed at LAMP/EPFL (https://lamp.epfl.ch/) and diff --git a/README.md b/README.md index 0e559f01..876063c3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# scala-parser-combinators [](https://travis-ci.org/scala/scala-parser-combinators) [](http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.scala-lang.modules%20a%3Ascala-parser-combinators_2.11) [](http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.scala-lang.modules%20a%3Ascala-parser-combinators_2.12) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/scala/scala-parser-combinators) +# scala-parser-combinators ### Scala Standard Parser Combinator Library diff --git a/build.sbt b/build.sbt index d7053be7..d7e5aaad 100644 --- a/build.sbt +++ b/build.sbt @@ -1,45 +1,91 @@ -import sbtcrossproject.CrossPlugin.autoImport.crossProject +// in the interest of reducing diffs between the 1.1.x branch and the +// main (2.x branch), there are some Scala 3 references in here that +// aren't affecting anything + +ThisBuild / licenses += (("Apache-2.0", url("https://www.apache.org/licenses/LICENSE-2.0"))) +ThisBuild / startYear := Some(2004) + +// I thought we could declare these in `ThisBuild` scope but no :-/ +val commonSettings = Seq( + versionScheme := Some("early-semver"), + versionPolicyIntention := { + if (scalaVersion.value.startsWith("3")) + Compatibility.None + else + Compatibility.BinaryCompatible + } +) + +lazy val root = project.in(file(".")) + .aggregate(parserCombinatorsJVM, parserCombinatorsJS, parserCombinatorsNative) + .settings( + commonSettings, + publish / skip := true, + ) lazy val parserCombinators = crossProject(JVMPlatform, JSPlatform, NativePlatform) - .withoutSuffixFor(JVMPlatform).in(file(".")) - .settings(ScalaModulePlugin.scalaModuleSettings) - .jvmSettings(ScalaModulePlugin.scalaModuleSettingsJVM) + .in(file(".")) .settings( + ScalaModulePlugin.scalaModuleSettings, + commonSettings, name := "scala-parser-combinators", + scalaModuleAutomaticModuleName := Some("scala.util.parsing"), - scalaModuleMimaPreviousVersion := Some("1.1.0").filter(_ => System.getenv("SCALAJS_VERSION") != "1.0.0"), - mimaBinaryIssueFilters ++= { - import com.typesafe.tools.mima.core._ - import com.typesafe.tools.mima.core.ProblemFilters._ - Seq( - exclude[IncompatibleSignatureProblem]("*"), + crossScalaVersions := Seq("2.13.8", "2.12.15", "2.11.12"), + scalaVersion := crossScalaVersions.value.head, - // the following 3 are due to https://github.com/lightbend/mima/issues/388 - exclude[DirectMissingMethodProblem]("scala.util.parsing.json.JSON.numberParser"), - exclude[DirectMissingMethodProblem]("scala.util.parsing.json.JSON.defaultNumberParser"), - exclude[DirectMissingMethodProblem]("scala.util.parsing.json.JSON.keywordCache") - ) - }, + libraryDependencies += "junit" % "junit" % "4.13.2" % Test, + libraryDependencies += "com.github.sbt" % "junit-interface" % "0.13.3" % Test, + // so we can `@nowarn` in test code, but only in test code, so the dependency + // doesn't leak downstream. can be dropped when we drop 2.11 from the crossbuild + libraryDependencies += "org.scala-lang.modules" %% "scala-collection-compat" % "2.7.0" % Test, - apiMappings += (scalaInstance.value.libraryJar -> - url(s"https://www.scala-lang.org/api/${scalaVersion.value}/")), + apiMappings ++= scalaInstance.value.libraryJars.collect { + case file if file.getName.startsWith("scala-library") && file.getName.endsWith(".jar") => + file -> url(s"http://www.scala-lang.org/api/${scalaVersion.value}/") + }.toMap, - scalacOptions in (Compile, doc) ++= Seq( - "-diagrams", - "-doc-source-url", - s"https://github.com/scala/scala-parser-combinators/tree/v${version.value}€{FILE_PATH}.scala", - "-sourcepath", - (baseDirectory in LocalRootProject).value.absolutePath, - "-doc-title", - "Scala Parser Combinators", - "-doc-version", - version.value - ), - unmanagedSourceDirectories in Compile ++= { - (unmanagedSourceDirectories in Compile).value.map { dir => + // go nearly warning-free, but only on 2.13, it's too hard across all versions + Compile / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, 13)) => Seq("-Werror", + // ideally we'd do something about this. `^?` is the responsible method + "-Wconf:site=scala.util.parsing.combinator.Parsers.*&cat=lint-multiarg-infix:i", + // not sure what resolving this would look like? didn't think about it too hard + "-Wconf:site=scala.util.parsing.combinator.lexical.StdLexical.*&cat=other-match-analysis:i", + ) + case _ => Seq() + }), + Compile / doc / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, 13)) => Seq( + // it isn't able to link to [[java.lang.NoSuchMethodError]] + // scala-xml doesn't have this problem, I tried copying their apiMappings stuff + // and that didn't help, I'm mystified why :-/ + """-Wconf:msg=Could not find any member to link for*:i""", + ) + case _ => Seq() + }), + Compile / doc / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match { + case Some((3, _)) => + Seq() // TODO see what flags might be desirable to pass to Scala 3's Scaladoc + case _ => + Seq( + "-diagrams", + "-doc-source-url", + s"https://github.com/scala/scala-parser-combinators/tree/v${version.value}€{FILE_PATH}.scala", + "-sourcepath", + (LocalRootProject / baseDirectory).value.absolutePath, + "-doc-title", + "Scala Parser Combinators", + "-doc-version", + version.value + ) + }), + Compile / unmanagedSourceDirectories ++= { + (Compile / unmanagedSourceDirectories).value.map { dir => CrossVersion.partialVersion(scalaVersion.value) match { - case Some((2, 13)) => file(dir.getPath ++ "-2.13") - case _ => file(dir.getPath ++ "-2.11-2.12") + case Some((2, 13)) => file(dir.getPath ++ "-2.13+") + case Some((3, _)) => file(dir.getPath ++ "-2.13+") + case _ => file(dir.getPath ++ "-2.13-") } } }, @@ -53,21 +99,29 @@ lazy val parserCombinators = crossProject(JVMPlatform, JSPlatform, NativePlatfor }, ) .jvmSettings( + ScalaModulePlugin.scalaModuleOsgiSettings, OsgiKeys.exportPackage := Seq(s"scala.util.parsing.*;version=${version.value}"), - libraryDependencies += "junit" % "junit" % "4.13" % Test, - libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % Test ) .jsSettings( + // mystified why https://github.com/scala-js/scala-js/issues/635 would be rearing its head, + // but only on sbt 1.4 + 2.13 and only in Test config?! WEIRD + Test / doc / scalacOptions ++= (CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, 13)) => Seq("-Wconf:msg=dropping dependency on node with no phase object*:i") + case _ => Seq() + }), // Scala.js cannot run forked tests - fork in Test := false + Test / fork := false ) - .jsConfigure(_.enablePlugins(ScalaJSJUnitPlugin)) + .jsEnablePlugins(ScalaJSJUnitPlugin) .nativeSettings( - skip in compile := System.getProperty("java.version").startsWith("1.6") || !scalaVersion.value.startsWith("2.11"), - test := {}, - libraryDependencies := { - if (!scalaVersion.value.startsWith("2.11")) - libraryDependencies.value.filterNot(_.organization == "org.scala-native") - else libraryDependencies.value - } + versionPolicyCheck / skip := true, + versionCheck / skip := true, + Test / fork := false, + libraryDependencies := + libraryDependencies.value.filterNot(_.organization == "junit") :+ "org.scala-native" %%% "junit-runtime" % "0.4.4", + addCompilerPlugin("org.scala-native" % "junit-plugin" % "0.4.4" cross CrossVersion.full) ) + +lazy val parserCombinatorsJVM = parserCombinators.jvm +lazy val parserCombinatorsJS = parserCombinators.js +lazy val parserCombinatorsNative = parserCombinators.native diff --git a/build.sh b/build.sh deleted file mode 100755 index 96184a0e..00000000 --- a/build.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -set -e - -# Builds of tagged revisions are published to sonatype staging. - -# Travis runs a build on new revisions and on new tags, so a tagged revision is built twice. -# Builds for a tag have TRAVIS_TAG defined, which we use for identifying tagged builds. - -# sbt-dynver sets the version number from the tag -# sbt-travisci sets the Scala version from the travis job matrix - -# To back-publish an existing release for a new Scala / Scala.js / Scala Native version: -# - check out the tag for the version that needs to be published -# - change `.travis.yml` to adjust the version numbers and trim down the build matrix as necessary -# - commit the changes and tag this new revision with an arbitrary suffix after a hash, e.g., -# `v1.2.3#dotty-0.27` (the suffix is ignored, the version will be `1.2.3`) - -# For normal tags that are cross-built, we release on JDK 8 for Scala 2.x -isReleaseJob() { - if [[ "$ADOPTOPENJDK" == "8" && "$TRAVIS_SCALA_VERSION" =~ ^2\.1[01234]\..*$ ]]; then - true - else - false - fi -} - -if [[ "$SCALAJS_VERSION" != "" ]]; then - projectPrefix="parserCombinatorsJS" -elif [[ "$SCALANATIVE_VERSION" != "" ]]; then - projectPrefix="parserCombinatorsNative" -else - projectPrefix="parserCombinators" -fi - -verPat="[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)?" -tagPat="^v$verPat(#.*)?$" - -if [[ "$TRAVIS_TAG" =~ $tagPat ]]; then - releaseTask="ci-release" - if ! isReleaseJob; then - echo "Not releasing on Java $ADOPTOPENJDK with Scala $TRAVIS_SCALA_VERSION" - exit 0 - fi -fi - -# default is +publishSigned; we cross-build with travis jobs, not sbt's crossScalaVersions -export CI_RELEASE="$projectPrefix/publishSigned" -export CI_SNAPSHOT_RELEASE="$projectPrefix/publish" - -# default is sonatypeBundleRelease, which closes and releases the staging repo -# see https://github.com/xerial/sbt-sonatype#commands -# for now, until we're confident in the new release scripts, just close the staging repo. -export CI_SONATYPE_RELEASE="; sonatypePrepare; sonatypeBundleUpload; sonatypeClose" - -sbt clean $projectPrefix/test $projectPrefix/publishLocal $releaseTask diff --git a/project/build.properties b/project/build.properties index a919a9b5..c8fcab54 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.3.8 +sbt.version=1.6.2 diff --git a/project/plugins.sbt b/project/plugins.sbt index 1d7924ab..fe5a7eda 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,13 +1,7 @@ -val scalaJSVersion = - Option(System.getenv("SCALAJS_VERSION")).filter(_.nonEmpty).getOrElse("0.6.32") +addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "3.0.1") -val scalaNativeVersion = - Option(System.getenv("SCALANATIVE_VERSION")).filter(_.nonEmpty).getOrElse("0.3.9") +addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.10.0") -addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "2.1.3") - -addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.0.0") -addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) - -addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.0.0") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % scalaNativeVersion) +addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.2.0") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.4") diff --git a/shared/src/main/scala-2.11-2.12/scala/util/parsing/input/ScalaVersionSpecificPagedSeq.scala b/shared/src/main/scala-2.13-/scala/util/parsing/input/ScalaVersionSpecificPagedSeq.scala similarity index 100% rename from shared/src/main/scala-2.11-2.12/scala/util/parsing/input/ScalaVersionSpecificPagedSeq.scala rename to shared/src/main/scala-2.13-/scala/util/parsing/input/ScalaVersionSpecificPagedSeq.scala