Skip to content

Commit 9c8b9de

Browse files
authored
Merge pull request #2781 from Gedochao/maintenance/scalac-xlint-help
Fix handling for `-Xlint:help`
2 parents 38fd961 + bee8310 commit 9c8b9de

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

modules/cli/src/main/scala/scala/cli/commands/shared/ScalacOptions.scala

+7-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,13 @@ object ScalacOptions {
5858
* message instead.
5959
*/
6060
val ScalacPrintOptions: Set[String] =
61-
scalacOptionsPurePrefixes ++ Set("-help", "-Xshow-phases", "-Xplugin-list", "-Vphases")
61+
scalacOptionsPurePrefixes ++ Set(
62+
"-help",
63+
"-Xshow-phases",
64+
"-Xplugin-list",
65+
"-Xlint:help",
66+
"-Vphases"
67+
)
6268

6369
/** This includes all the scalac options which are redirected to native Scala CLI options. */
6470
val ScalaCliRedirectedOptions = Set(

modules/integration/src/test/scala/scala/cli/integration/RunScalacCompatTestDefinitions.scala

+24-19
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import java.io.File
77
import scala.jdk.CollectionConverters.*
88
import scala.util.Properties
99

10-
trait RunScalacCompatTestDefinitions { _: RunTestDefinitions =>
10+
trait RunScalacCompatTestDefinitions {
11+
_: RunTestDefinitions =>
1112
def commandLineScalacXOption(): Unit = {
1213
val inputs = TestInputs(
1314
os.rel / "Test.scala" ->
@@ -143,26 +144,30 @@ trait RunScalacCompatTestDefinitions { _: RunTestDefinitions =>
143144
}
144145
}
145146

146-
test("scalac print options") {
147+
for {
148+
printOption <- {
149+
val printOptionsForAllVersions = Seq("-X", "-Xshow-phases", "-Xplugin-list", "-Y")
150+
val printOptionsScala213OrHigher = Seq("-V", "-Vphases", "-W")
151+
val printOptionsScala2 = Seq("-Xlint:help")
152+
actualScalaVersion match {
153+
case v if v.startsWith("3") => printOptionsForAllVersions ++ printOptionsScala213OrHigher
154+
case v if v.startsWith("2.13") =>
155+
printOptionsForAllVersions ++ printOptionsScala213OrHigher ++ printOptionsScala2
156+
case v if v.startsWith("2.12") => printOptionsForAllVersions ++ printOptionsScala2
157+
}
158+
}
159+
explicitSubcommand <- Seq(true, false)
160+
explicitSubcommandString =
161+
if (explicitSubcommand) "(explicit run subcommand)" else "(default subcommand)"
162+
} test(s"scalac print option: $printOption $explicitSubcommandString") {
147163
emptyInputs.fromRoot { root =>
148-
val printOptionsForAllVersions = Seq("-X", "-Xshow-phases", "-Y")
149-
val printOptionsSince213 = Seq("-V", "-Vphases", "-W")
150-
val version213OrHigher =
151-
actualScalaVersion.startsWith("2.13") || actualScalaVersion.startsWith("3")
152-
val printOptionsToTest = printOptionsForAllVersions ++
164+
val res =
153165
(
154-
if (version213OrHigher) printOptionsSince213
155-
else Seq.empty
156-
)
157-
printOptionsToTest.foreach { printOption =>
158-
val res = os.proc(
159-
TestUtil.cli,
160-
extraOptions,
161-
printOption
162-
)
163-
.call(cwd = root, mergeErrIntoOut = true)
164-
expect(res.out.text().nonEmpty)
165-
}
166+
if (explicitSubcommand) os.proc(TestUtil.cli, "run", printOption, extraOptions)
167+
else os.proc(TestUtil.cli, printOption, extraOptions)
168+
).call(cwd = root, mergeErrIntoOut = true)
169+
expect(res.exitCode == 0)
170+
expect(res.out.text().nonEmpty)
166171
}
167172
}
168173

0 commit comments

Comments
 (0)