How can I find a description of scala compiler flags/options?

8.2k views Asked by At

How can I find all of the flags for the latest scalac version? After googling for hours I have found only outdated docs. (for example, they don't even mention "-feature" flag).

Is there any way to obtain the list of compiler flags with descriptions from scalac, or anything else?

3

There are 3 answers

2
Christopher Currie On BEST ANSWER

The closest I have been able to find is the relevant source files for the compiler. Unfortunately the options are spread among several files. As of this writing, it breaks down like so:

These will of course be for the current development version of the compiler, so if you want options for a specific version of scalac, you'll need to use the "branch" drop-down menu to view the correct version tag.

5
som-snytt On

Edit: Documentation for Scala Compiler Options has been posted.

Most of us get by with scalac -help, scalac -X and scalac -Y.

Don't forget to scala -help, too.

Edit: sbt user can do the usual:

> set scalacOptions in Compile += "-X"
> compile
[snip]
[info]   -Xcheck-null                   Warn upon selection of nullable reference.
[info]   -Xcheckinit                    Wrap field accessors to throw an exception on uninitialized access.
[info]   -Xdisable-assertions           Generate no assertions or assumptions.
[info]   -Xdivergence211                Turn on the 2.11 behavior of implicit divergence not terminating recursive implicit searches (SI-7291).
[info]   -Xelide-below <n>              Calls to @elidable methods are omitted if method priority is lower than argument
[info]   -Xexperimental                 Enable experimental extensions.
[info]   -Xfatal-warnings               Fail the compilation if there are any warnings.
[snip]

At least the man page was updated recently:

https://issues.scala-lang.org/browse/SI-7824

0
Julian A Avar C On

Since Dotty (Scala 3), it seems these options are in a different place.

Sadly it seems that the language flags no longer show up when typing scalac -language:help like it does for 2.13.8, not sure why.

I believe those are all the prominent options for Dotty.