diff --git a/modules/build/src/main/scala/scala/build/internal/ClassCodeWrapper.scala b/modules/build/src/main/scala/scala/build/internal/ClassCodeWrapper.scala index e3a3e1d4a2..d64d1c5880 100644 --- a/modules/build/src/main/scala/scala/build/internal/ClassCodeWrapper.scala +++ b/modules/build/src/main/scala/scala/build/internal/ClassCodeWrapper.scala @@ -30,7 +30,7 @@ case object ClassCodeWrapper extends CodeWrapper { | | def main(args: Array[String]): Unit = { | args$$set(args) - | script.hashCode() // hashCode to clear scalac warning about pure expression in statement position + | val _ = script.hashCode() // hashCode to clear scalac warning about pure expression in statement position | } |} | diff --git a/modules/build/src/main/scala/scala/build/internal/ObjectCodeWrapper.scala b/modules/build/src/main/scala/scala/build/internal/ObjectCodeWrapper.scala index aced7e3cfe..2141a180e9 100644 --- a/modules/build/src/main/scala/scala/build/internal/ObjectCodeWrapper.scala +++ b/modules/build/src/main/scala/scala/build/internal/ObjectCodeWrapper.scala @@ -31,7 +31,7 @@ case object ObjectCodeWrapper extends CodeWrapper { | } | def main(args: Array[String]): Unit = { | args$$set(args) - | $funHashCodeMethod // hasCode to clear scalac warning about pure expression in statement position + | val _ = $funHashCodeMethod // hasCode to clear scalac warning about pure expression in statement position | } |} |""".stripMargin) diff --git a/modules/integration/src/test/scala/scala/cli/integration/RunScriptTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/RunScriptTestDefinitions.scala index cc602928a3..ceef5e05b5 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/RunScriptTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/RunScriptTestDefinitions.scala @@ -518,4 +518,31 @@ trait RunScriptTestDefinitions { _: RunTestDefinitions => } } } + + test("script wrappers satisfy strict compiler flags") { + val inputs = TestInputs( + os.rel / "strictClassWrapper.sc" -> + """//> using scala 3.3.1 + |//> using options -Werror -Wnonunit-statement -Wunused:all -Wvalue-discard + |//> using options -Yno-experimental -Ysafe-init -deprecation -feature -language:strictEquality + |//> using options -new-syntax -old-syntax -unchecked -no-indent + | + |println(strictObjectWrapper.Foo(42).x) + |""".stripMargin, + + os.rel / "strictObjectWrapper.sc" -> + """//> using objectWrapper + |//> using scala 3.3.1 + |//> using options -Werror -Wnonunit-statement -Wunused:all -Wvalue-discard + |//> using options -Yno-experimental -Ysafe-init -deprecation -feature -language:strictEquality + |//> using options -new-syntax -old-syntax -unchecked -no-indent + | + |case class Foo(x: Int) + |""".stripMargin + ) + inputs.fromRoot { root => + val p = os.proc(TestUtil.cli, "--power", "strictClassWrapper.sc", "strictObjectWrapper.sc").call(cwd = root) + expect(p.out.trim() == "42") + } + } }