RFR: 8268869: java in source-file mode suggests javac-only Xlint flags
asotona at openjdk.java.net
Fri Sep 3 09:24:26 UTC 2021
On Mon, 28 Jun 2021 13:33:04 GMT, Adam Sotona <asotona at openjdk.org> wrote:
> java in source-file mode (see JEP 330) displays compiler notes suggesting recompile with -Xlint:deprecation and -Xlint:unchecked. According JEP 330 these advanced javac optionns are not allowed. The goal with JEP 330 was to support developers that are at the early stages of learning Java, so options such as -Xlint are out of their scope.
> This patch prevents displaying "Note: Recompile with -Xlint:deprecation for details." and "Note: Recompile with -Xlint:unchecked for details." by implicitly enabling -Xlint:deprecation and -Xlint:unchecked in com.sun.tool.javac.launcher.Main for all invocations.
> Beside avoiding prohibited javac option suggestion notes this patch has positive effect of more verbose compilation diagnostic. Higher diagnostic verbosity is appreciated by users learning Java on single-source programs in java source-file mode.
> Similar case with -Xdiags:verbose was reported in JDK-8248843 and resolved in commit openjdk/jdk/31d0f0d8after review openjdk/jdk/4094
> The patch also provides new test "testNoRecompileWithSuggestions" detecting unwanted recompilation suggestions in java in source-file mode execution. The test cover also case from JDK-8248843 with -Xdiags:verbose
test/langtools/tools/javac/launcher/SourceLauncherTest.java already contains 29 other tests and none of them is using text blocks so overall test readibility does not change much by adding a test #30.
>From the perspective of potential backporting of the fix and related test I still think it is contra-productive to use backward incompatible language feature in JDK tests. Clean backports (already approved patches applicable unchanged without conflict) are almost automated process, while any modifications to the backported patches trigger individual full review process for each target JDK branch/version.
More information about the compiler-dev