Non-Sealed abstract classes not parsed
StefanPuia opened this issue · comments
Non-sealed abstract classes seem to not be handled properly.
I found a few threads on this since they were a preview feature, but not much since they were released.
This seems to fail with different errors depending on the order of the abstract
and non-sealed
tokens
abstract non-sealed
:
com.google.googlejavaformat.java.FormatterException: 3:2: error: expected token: 'non'; generated class instead
non-sealed abstract
:
com.google.googlejavaformat.java.FormatterException: 3:9: error: class, interface, enum, or record expected
here is an example project and the full stack trace provided by spotless
https://github.com/StefanPuia/google-java-format-java-17-sealed
https://github.com/StefanPuia/google-java-format-java-17-sealed/runs/4512594407?check_suite_focus=true#step:4:195
Thanks, I agree this is a bug:
package com.demo;
public abstract non-sealed class AbstractNonSealedClass extends SealedClass {
}
java \
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \
AbstractNonSealedClass.java
...
./abstract-non-sealed/src/main/java/com/demo/AbstractNonSealedClass.java:3:2: error: expected token: 'non'; generated class instead