Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport "Fail early & more clearly on shaded-broken classfiles" to 3.5.2 #21464

Merged
merged 1 commit into from
Aug 27, 2024

Conversation

WojciechMazur
Copy link
Contributor

Backports #21262 to the 3.5.2 branch.

PR submitted by the release tooling.
[skip ci]

The shading utility uses for the coursier or coursierapi classes has
removed the RuntimeVisibleAnnotation attribute after the ScalaSignature
attribute.  Parsing such a classfile caused the Scala 3 compiler to
parse the file as a Java classfile.  It seems there something about how
we deal with packages and package objects (which don't exist in Java)
when we are incorrectly sent down this code path.  The Scala 2 compiler
already correctly caught and failed on this early, with this detail, so
look to do the same here.

Automating the test for this isn't easy.  Because relying on an external
dependency would be a hazard for CI, long term.  Perhaps we could try to
recreate a classfile with a similar bytecode problem, but that would be
quite involved as well.  I guess we could commit some or all of the
classfiles from the original, but it's generally advised not to commit
binaries to the source repo.

So instead I'm leaving instructions as to how I manually tested this, in
preparing this change.  I used coursier's `cs` binary to download the
jars and produce a classpath string:

     cs fetch -p org.scalameta:scalafmt-dynamic_2.13:3.8.1

Then I invoked `scalac` in the sbt shell, passing that classpath string:

    scalac -classpath $classpathAbove i20405.scala
    scalac -classpath $classpathAbove i20555.scala

Using the two minisations in the 20405 and 20555 issues.

[Cherry-picked cecfa8c]
Base automatically changed from 3.5.x-21274 to 3.5.x August 27, 2024 22:09
@WojciechMazur WojciechMazur merged commit 09db4b8 into 3.5.x Aug 27, 2024
27 of 42 checks passed
@WojciechMazur WojciechMazur deleted the 3.5.x-21262 branch August 27, 2024 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants