Hopefully, it is a correct category to post to…
Hello everyone!
I am quite a bit surprised that in Scala3 the “-language” compiler option behaves way differently comparing to all Scala2 versions (I checked with majority of 2.12.x, 2.13.x and then 3.0.0 through 3.4.1).
For example, when I use it with Scala 2.13.13:
% scala-cli compile -S 2.13.13 -O -language:help -- empty.scala
Enable or disable language features
dynamics Allow direct or indirect subclasses of scala.Dynamic
existentials Existential types (besides wildcard types) can be written and inferred
higherKinds Allow higher-kinded types
implicitConversions Allow definition of implicit functions called views
postfixOps Allow postfix operator notation, such as `1 to 10 toList` (not recommended)
reflectiveCalls Allow reflective access to members of structural types
experimental.macros Allow macro definition (besides implementation and application)
Now, if I pass an incorrect option in there:
% scala-cli compile -S 2.13.13 -O -language:WRONG -- empty.scala
scalac error: 'WRONG' is not a valid choice for '-language'
scalac -help gives more information
Compilation failed
And those messages look pretty good to me.
However, if I try the same things with any of Scala3 versions, I get:
% scala-cli compile -S 3.4.1 -O -language:help -- empty.scala
Enable one or more language features.
(no available options provided)
% scala-cli compile -S 3.4.1 -O -language:WRONG -- empty.scala
(no error reported, the file compiles successfully)
Also, just to make sure it is not a scala-cli issue, I tried this option in SBT – works pretty much the same way.
So I wonder – is such behavior a known/unknown bug or is such behavior expected for Scala3,
could you clarify please?
Thank you!