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

3

37

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?

Jorgensen answered 3/9, 2013 at 20:58 Comment(0)
E
27

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.

Erupt answered 8/9, 2013 at 8:8 Comment(2)
Another idea is to grab the source and ant docs.comp. Then scala/build/scaladoc/compiler/index.html#scala.tools.nsc.Settings inherits from std and other settings. Unfortunately, the scaladoc is only a listing. Another idea is to grab the Eclipse IDE and browse those sources that way.Unbounded
another fairly fresh list of arguments and definitions: tpolecat.github.io/2017/04/25/scalac-flags.htmlJudgemade
U
30

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

Unbounded answered 3/9, 2013 at 23:38 Comment(5)
If the majority of your Scala usage is through Maven or SBT, you may not actually have scalac installed on your system (I don't), so this is not always the most convenient solution. Real online documentation of the compiler would be very useful.Erupt
@ChristopherCurrie I agree it's annoying that the doc/tools doesn't show latest basic options for scalac. I think I'll open a ticket if there isn't one; that should be automated. I even just said to myself, where's feature and language as did the OP. "D'oh."Unbounded
This is also annoying if you're working with a build that uses a different version of scalac from what you have installed locally.Renaldorenard
Also strange approach: Scala 2.12.12 doesn't have support for JMV>8 in scalacOptions, despite docs.scala-lang.org/overviews/compiler-options/index.html saying opposite. <p>[error] Usage: -target:<target> where <target> choices are jvm-1.5, jvm-1.6, jvm-1.7, jvm-1.8 (default: jvm-1.8). vs <p> docs: -target:TARGET or --target:TARGET Target platform for object files. ([8],9,10,11,12)Lated
@DonaldDuck it seems I commented that it should have a drop-down to select a version. Maybe I'll break that request out into a new ticket. github.com/scala/docs.scala-lang/issues/…Unbounded
E
27

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.

Erupt answered 8/9, 2013 at 8:8 Comment(2)
Another idea is to grab the source and ant docs.comp. Then scala/build/scaladoc/compiler/index.html#scala.tools.nsc.Settings inherits from std and other settings. Unfortunately, the scaladoc is only a listing. Another idea is to grab the Eclipse IDE and browse those sources that way.Unbounded
another fairly fresh list of arguments and definitions: tpolecat.github.io/2017/04/25/scalac-flags.htmlJudgemade
W
0

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.

Windcheater answered 18/7, 2022 at 6:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.