Skip to content

Commit 978f6d8

Browse files
committed
Use local proxy instead of scala.tools.cmd patch
Copied the `CompilerAPICompat` code verbatim from @WojciechMazur's suggestion on bazel-contrib#1634. Definitely seems more robust than injecting `CommandLineParser` directly into `scala.tools.cmd`.
1 parent 1a83b0d commit 978f6d8

File tree

5 files changed

+27
-12
lines changed

5 files changed

+27
-12
lines changed

third_party/utils/src/test/BUILD

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ scala_library(
1313
any_3 = [
1414
"io/bazel/rulesscala/utils/Scala3CompilerUtils.scala",
1515
],
16+
before_2_13_9 = [
17+
"io/bazel/rulesscala/utils/CompilerAPICompat_before_2_13_9.scala",
18+
],
1619
between_2_13_9_and_3 = [
17-
"scala/tools/cmd/Scala_2_13_9_CommandLineParser.scala",
20+
"io/bazel/rulesscala/utils/CompilerAPICompat_since_2_13_9.scala",
1821
],
1922
),
2023
visibility = ["//visibility:public"],
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.bazel.rulesscala.utils
2+
3+
import scala.tools.cmd.CommandLineParser
4+
5+
trait CompilerAPICompat {
6+
def tokenize(cmd: String): List[String] = CommandLineParser.tokenize(cmd)
7+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package scala {
2+
package rulesscala {
3+
// proxy to private[scala] compiler API
4+
object Proxy {
5+
def tokenize(cmd: String): List[String] = sys.process.Parser.tokenize(cmd)
6+
}
7+
}
8+
}
9+
10+
package io.bazel.rulesscala.utils {
11+
trait CompilerAPICompat {
12+
def tokenize(cmd: String): List[String] = scala.rulesscala.Proxy.tokenize(cmd)
13+
}
14+
}

third_party/utils/src/test/io/bazel/rulesscala/utils/TestUtil.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,13 @@ import scala.reflect.io.AbstractFile
77
import scala.reflect.io.Directory
88
import scala.reflect.io.PlainDirectory
99
import scala.reflect.io.VirtualDirectory
10-
import scala.tools.cmd.CommandLineParser
1110
import scala.tools.nsc.CompilerCommand
1211
import scala.tools.nsc.Global
1312
import scala.tools.nsc.Settings
1413
import scala.tools.nsc.reporters.StoreReporter
1514
import io.bazel.rulesscala.dependencyanalyzer.DependencyTrackingMethod
1615

17-
object TestUtil {
16+
object TestUtil extends CompilerAPICompat {
1817
final val defaultTarget = "//..."
1918

2019
val isWindows: Boolean = System.getProperty("os.name").toLowerCase.contains("windows")
@@ -116,7 +115,7 @@ object TestUtil {
116115
output: AbstractFile
117116
): List[StoreReporter#Info] = {
118117
// TODO: Optimize and cache global.
119-
val options = CommandLineParser.tokenize(compileOptions)
118+
val options = tokenize(compileOptions)
120119
val reporter = new StoreReporter()
121120
val settings = new Settings(println)
122121
val _ = new CompilerCommand(options, settings)

third_party/utils/src/test/scala/tools/cmd/Scala_2_13_9_CommandLineParser.scala

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)