-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8368050: Validation missing in ClassFile signature factories #27380
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
8368050: Validation missing in ClassFile signature factories #27380
Conversation
👋 Welcome back liach! A progress list of the required criteria for merging this PR into |
@liach This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 36 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
Webrevs
|
* {@return a class type signature} | ||
* | ||
* @param outerType signature of the outer type, may be {@code null} | ||
* to indicate this is a top-level class or interface |
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.
Actually here is the ambiguity. Null outer type is more than frequently used also for inner classes.
Signatures of inner classes are mainly encoded without the outer type and with the $-notation of the outer$inner as the class name.
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.
Clarified by introducing examples of signature strings and on the className/outerType.
*/ | ||
public static ClassTypeSig of(ClassTypeSig outerType, String className, TypeArg... typeArgs) { | ||
requireNonNull(className); | ||
return new SignaturesImpl.ClassTypeSigImpl(Optional.ofNullable(outerType), className.replace(".", "/"), List.of(typeArgs)); |
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.
We should declare that the method does not accept binary class names, If we remove the conversion.
And that seems to be a significant compatibility change.
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.
Yes, this spec links to "identifiers" which explicitly rejects dots. Added this risk in the CSR. I think we should be fine here.
src/java.base/share/classes/jdk/internal/classfile/impl/ClassRemapperImpl.java
Outdated
Show resolved
Hide resolved
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.
Looks good to me.
Thanks for the reviews! /integrate |
Going to push as commit f9b91a7.
Your commit was automatically rebased without conflicts. |
The Signature modeling in the ClassFile API is missing some validations required by JVMS, notably identifier character restrictions and void type restrictions. In addition, the model currently uses
ClassDesc
to indicate a simple name for an inner class signature, which is incorrect, and this patch proposes to deprecate that API for removal.Progress
Issues
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/27380/head:pull/27380
$ git checkout pull/27380
Update a local copy of the PR:
$ git checkout pull/27380
$ git pull https://git.openjdk.org/jdk.git pull/27380/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 27380
View PR using the GUI difftool:
$ git pr show -t 27380
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/27380.diff
Using Webrev
Link to Webrev Comment