coursier / apps

40 stars 53 forks source link

scalac:3.x does not support -print-tasty flag #148

Open bishabosha opened 2 years ago

bishabosha commented 2 years ago

The official GitHub hosted Scala 3 scalac script for versions 3.0.0 and higher scans the flags to pick which main class to run, for example:

This means that the scalac bootstrap launcher installed by cs does not have feature parity as it always runs dotty.tools.dotc.Main.

this impacts the doc page at https://docs.scala-lang.org/scala3/guides/tasty-overview.html#what-is-tasty which recommends to use

$ scalac -print-tasty hello.tasty
$ scalac -decompile hello.tasty

So the solutions are either

  1. to publish somewhere a jar with a main class that replicates the scalac script
  2. to bundle the original bash/bat scripts for the 3.x series. This requires versionOverrides to support using prebuilt for one version, and jvm launcher for another

another mitigation is to add the tasty-printer main class to apps

bishabosha commented 2 years ago

I think version 1 is probably the best solution - e.g. it is useful to use cs to launch nightly releases, so I opened https://github.com/lampepfl/dotty/issues/15173 - however this would mean scalac is still not feature complete for all previous scala 3 versions. Perhaps that is ok?

alexarchambault commented 2 years ago

I guess fixing both - have the main class from dotty handle the argument, and also installing the official script for former versions - is fine (even if the second fix takes a little longer than the first one).

bishabosha commented 2 years ago

~the only problem is if it is widespread to use coursier cli as the way for users to quickly test nightly releases of scala 3, which would not work as they are not released to GitHub - but scala-cli can fill that gap :/~

Edit: yes actually I see it is not useful probably to test nighlies for old releases :)