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

[MCOMPILER-485] Fixes internal string format in generated package-info.class #95

Merged
merged 3 commits into from Feb 22, 2022

Conversation

dbwiddis
Copy link
Contributor

@dbwiddis dbwiddis commented Feb 15, 2022

https://issues.apache.org/jira/browse/MCOMPILER-485

Per JVMS 4.2.1, the package name representation in the internal class structure always contains forward slashes in place of periods. This PR fixes the code from MCOMPILER-205 which passed a package name extracted from the file path which used backward slashes on Windows.

While not necessarily a cause of the bug, the javadocs for ClassVisitor (the superclass of ClassWriter) state "The methods of this class must be called in the following order: visit visitSource ..." so I reordered those method calls as well.

The IT is copied from MCOMPILER-205 but with a more detailed test to confirm the correct internal representation of the package name in the class file.

mvn -Prun-its clean verify after the first (IT) commit finds the failure; note the 5c (\) on windows vs. 2f (/).

Running post-build script: C:\Users\dawiddis.REDMOND\git\maven-compiler-plugin\target\it\MCOMPILER-485\verify.groovy
Assertion failed:

assert packageInfoHex.contains( '64756d6d792f7061636b6167652d696e666f' )
       |              |          d u m m y / p a c k a g e - i n f o 
       |              false
       cafebabe0000003400070100117061636b6167652d696e666f2e6a61766101001264756d6d795c7061636b6167652d696e666f0700020100106a61 ...
                                                                         d u m m y \ p a c k a g e - i n f o

After code fix, passes tests:

[INFO] Building: MCOMPILER-485\pom.xml
[INFO] run post-build script verify.groovy
[INFO]           MCOMPILER-485\pom.xml ............................ SUCCESS (3.0 s)

Following this checklist to help us incorporate your
contribution quickly and easily:

  • Make sure there is a JIRA issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a JIRA issue. Your pull request should address just this issue, without
    pulling in other changes.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Format the pull request title like [MCOMPILER-XXX] - Fixes bug in ApproximateQuantiles,
    where you replace MCOMPILER-XXX with the appropriate JIRA issue. Best practice
    is to use the JIRA issue title in the pull request title and in the first line of the
    commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Run mvn clean verify to make sure basic checks pass. A more thorough check will
    be performed on your pull request automatically.
  • You have run the integration tests successfully (mvn -Prun-its clean verify).

If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.

To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@dbwiddis dbwiddis force-pushed the MCOMPILER-485 branch 2 times, most recently from ad7dac6 to c03c7bc Compare February 15, 2022 19:53
The internal package string in the class file should contain a forward
slash
Per JLS 4.2.1 if the file separator character is not a forward slash,
replace it
Javadocs for org.objectweb.asm.ClassVisitor specify "The methods of this
class must be called in the following order: visit [ visitSource ] ..."
@dbwiddis
Copy link
Contributor Author

Sorry for the force-push churn. Finally got IT tests to work and had a upper/lower case issue in the hex string, then forgot to use fixup on the rebase. Should be good to go now.

@olamy
Copy link
Member

olamy commented Feb 15, 2022

Sorry for the force-push churn. Finally got IT tests to work and had a upper/lower case issue in the hex string, then forgot to use fixup on the rebase. Should be good to go now.

no worries mate. Thanks again for your help.

Copy link
Member

@olamy olamy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
maybe @gnodet could have a look as well?
thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
3 participants