RFR: 8332474: Tighten up ToolBox' JavacTask to not silently accept javac crash as a failure [v3]
Jan Lahoda
jlahoda at openjdk.org
Thu Jul 4 10:53:51 UTC 2024
> Tests for javac use several test frameworks, and one of them is the "toolbox", which provides `JavacTask` that allows to conveniently run javac on a given set of sources. The problem with `JavacTask` is that, by default, when a compilation failure is expected, javac crash (exit code 4) is tolerated by the `JavacTask`. And the test must manually select a specific exit code to overwrite this behavior.
>
> This then leads to bugs like https://bugs.openjdk.org/browse/JDK-8335385, which are silently ignored by `JavacTask`.
>
> The proposal herein is to tighten up the `JavacTask`, and effectively disallow exit code 4 for `JavacTask` (but permit any other exit code, as javac is using several exit codes). The base implementation in `AbstractTask` is changed to use a validator for the exit codes, which is then leveraged by `JavacTask`.
>
> This patch depends on PR #19969, as that fixes JDK-8335385, where the javac crash is ignored. It also tweaks module attribution to not leave empty `JCModuleDecl.sym` for duplicate modules, and set it to an erroneous module. The empty (`null`) symbol here crashes javac in the `test/langtools/tools/javac/modules/MultiModuleModeTest.java#testDuplicateModules`, and the test wouldn't pass with this more strict `JavacTask`.
Jan Lahoda has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains ten commits:
- Merge branch 'JDK-8332474' of github.com:lahodaj/jdk into JDK-8332474
- Fixing typo, as suggested.
- Merge branch 'master' into JDK-8332474
- Fixing expect semantics
- Cleanup.
- Cleanup.
- Merge branch 'JDK-8335385' into JDK-8332474
- 8335385: javac crash on unattributed piece of AST
- 8332474: Tighten up ToolBox' JavacTask to not silently access javac crash as a failure
-------------
Changes: https://git.openjdk.org/jdk/pull/19972/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19972&range=02
Stats: 73 lines in 3 files changed: 64 ins; 1 del; 8 mod
Patch: https://git.openjdk.org/jdk/pull/19972.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/19972/head:pull/19972
PR: https://git.openjdk.org/jdk/pull/19972
More information about the compiler-dev
mailing list