google / google/google-java-format
Allow to provide source file java language version
- Dominant language
- Java
- Stars
- 6.2k
- Forks
- 937
- Avg merge
- 6m
- Merged PRs (30d)
- 3
Description
When formatting files with `google-java-format`, the parser uses the same source version as its own runtime version (running `google-java-format` on JDK X implies that that Java source files are conformant with JDK `X`), but this is actually not necessary true and files may be aiming for a different (older) Java version. Nowadays it is a common pattern to use `--release` flag to compiler for a specific older version of the language using a newer JDK.
Unfortunately Java language is not fully backward compatible and some features have introduced breaking changes like reserved identifiers `var`, `with, `yield` or `record` (see current list in [JLS Section 3.8](https://docs.oracle.com/javase/specs/jls/se21/html/jls-3.html#jls-3.8))
For files who were designed to compile with an older Java version and who are using now reserved identifiers, this cause their processing with `google-java-format` using a recent JDK version to fail.
A solution would be to allow to pass either the `source` or the `release` option to the java parser to adapt its own parsing to the java version used by the file.
Contributor guide
Assessment
This issue has not been assessed yet.