google / google-java-format

Reformats Java source code to comply with Google Java Style.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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