-
-
Notifications
You must be signed in to change notification settings - Fork 7
Add a plugin for unpick v3 #52
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
Conversation
|
|
J21 is a bit annoying, sadly. |
shartte
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did indeed not find Malware in this.
# Conflicts: # cli/src/main/java/net/neoforged/jst/cli/io/FolderFileSink.java
|
🚀 This PR has been released as JavaSourceTransformer version |
Earthcomputer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not checked your fancy flow logic, I will assume that works well. In general there are some precedence issues. Even though you shouldn't ever need to add parentheses to an inner unpick expression, because the unpick parser already handles precedence and should construct a tree which when written has precedence that preserves semantics, at the top level you still need to add parentheses based on the context of the surrounding code, and when you are generating new expressions.
This PR implements a constant uninlining plugin based on the Unpick v3 specification.
Constant uninlining is the practice of reverting the inlining of constant values in decompiled code - an optimisation strategy of the compiler. This plugin will read specification files and uninline constant values in the source according to the specification.
In cases where the specification provides a number format (oct, dex or hex), if it is unable to uninline the value to a specific constant, it will convert it to the specified format.
Java is also bumped to Java 21, making this PR a breaking changes. This is done because the Unpick format library requires Java 21. This should not be a problem for our tooling as NFRT already runs with Java 21.
However, a major bump is still needed.