On Mon, 1 May 2023 13:06:24 GMT, Jim Laskey <jlas...@openjdk.org> wrote:

>> Add flexible main methods and anonymous main classes to the Java language.
>
> Jim Laskey has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - Anonymous main classes renamed to unnamed classes
>  - Add test

src/java.base/share/classes/jdk/internal/misc/MainMethodFinder.java line 139:

> 137:     public static Method findMainMethod(Class<?> mainClass) throws 
> NoSuchMethodException {
> 138:         try {
> 139:             Method mainMethod = mainClass.getMethod("main", 
> String[].class);

Hello Jim, I think this specific line is trying to find a `public static void 
main(String[])` method from the launched class. In the current form of this 
implementation, this has the potential of returning a non-static `public void 
main(String[])` from here. I think a `isStatic(mainMethod)` would be needed 
here before returning this method as the found method.

src/java.base/share/classes/jdk/internal/misc/MainMethodFinder.java line 142:

> 140: 
> 141:             if (mainMethod.getDeclaringClass() != mainClass) {
> 142:                 System.err.println("WARNING: static main in super class 
> will be deprecated.");

Similarly, this warning would have to be logged only if the method is `static`. 
Furthermore, do you think we should include the declaring class in the log 
message to provide some context on what's causing this warning? Something like:
> WARNING: static main(String[]) in super class foo.bar.Parent will be 
> deprecated.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1185882851
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1185885497

Reply via email to