Closed
Description
When trying to use GJF with JDK 16, I get the following error
Caused by: com.google.googlejavaformat.java.FormatterException: 8:52: error: expected token: 'sealed'; generated class instead
at com.google.googlejavaformat.java.Formatter.getFormatReplacements(Formatter.java:293)
at com.google.googlejavaformat.java.Formatter.formatSource(Formatter.java:267)
at com.google.googlejavaformat.java.Formatter.formatSource(Formatter.java:233)
... 135 more
With this source code
package dev.zacsweers.moshix.sealed.sample.java;
import com.squareup.moshi.JsonClass;
import dev.zacsweers.moshix.sealed.annotations.TypeLabel;
public interface FailureTestCases {
@JsonClass(generateAdapter = false, generator = "sealed:type")
sealed class DuplicateLabels permits DuplicateLabels.TypeA, DuplicateLabels.TypeB {
@TypeLabel(label = "a")
static final class TypeA extends DuplicateLabels {}
@TypeLabel(label = "a")
static final class TypeB extends DuplicateLabels {}
}
@JsonClass(generateAdapter = false, generator = "sealed:type")
sealed class DuplicateAlternateLabels permits DuplicateAlternateLabels.TypeA, DuplicateAlternateLabels.TypeB {
@TypeLabel(label = "a", alternateLabels = {"aa"})
static final class TypeA extends DuplicateAlternateLabels {}
@TypeLabel(label = "b", alternateLabels = {"aa"})
static final class TypeB extends DuplicateAlternateLabels {}
}
@JsonClass(generateAdapter = false, generator = "sealed:type")
sealed class GenericSubtypes<T> permits GenericSubtypes.TypeA, GenericSubtypes.TypeB {
// This form is ok
@TypeLabel(label = "a", alternateLabels = {"aa"})
static final class TypeA extends GenericSubtypes<String> {}
// This form is not ok
@TypeLabel(label = "b", alternateLabels = {"aa"})
static final class TypeB<T> extends GenericSubtypes<T> {}
}
}
I know sealed classes are still in preview though, so understand if this isn't expected to be supported yet. The error message is a little surprising though
Metadata
Metadata
Assignees
Labels
No labels