RFR: 8226216: parameter modifiers are not visible to javac plugins across compilation boundaries

Jonathan Gibbons jjg at openjdk.java.net
Thu Dec 24 16:25:59 UTC 2020


On Thu, 24 Dec 2020 16:02:19 GMT, Guoxiong Li <github.com+13688759+lgxbslgx at openjdk.org> wrote:

> Hi all,
> 
> javac fails to read modifiers from the MethodParameters attribute in class files, which prevents plugins from accessing those modifiers across compilation boundaries. Because `com.sun.tools.javac.jvm.ClassReader` doesn't read and store the access flags(modifiers) from MethodParameters attribute.
> 
> This patch fixes it and adds a corresponding test case. All the existing tests of javac passed locally.
> 
> Thank you for taking the time to review.
> 
> Best Regards.

I've noted a couple of minor issues in the test.
I'll leave it to other javac folk to decide the merits of the change to `ClassReader`.
Note that the `MethodParameters` attribute may not always be present.

test/langtools/tools/javac/classreader/8226216/T8226216.java line 9:

> 7:  * published by the Free Software Foundation.  Oracle designates this
> 8:  * particular file as subject to the "Classpath" exception as provided
> 9:  * by Oracle in the LICENSE file that accompanied this code.

Tests should not contain the text `Oracle designates ... this code.` or the immediately preceding whitespace.

test/langtools/tools/javac/classreader/8226216/T8226216.java line 123:

> 121: 
> 122:     @Test
> 123:     public void testParameterModifiersNotVisiable() throws Exception {

spelling: should be "Visible"

-------------

Changes requested by jjg (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1890


More information about the compiler-dev mailing list