diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-13 17:30:22 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-13 17:30:22 +0100 |
| commit | 3aec3caf949c246855a0d655eb359935605930c4 (patch) | |
| tree | 2a2c5a3089925ef966bb48f9d5c02e42012d80db /src/main/java/org/zwobble | |
| parent | fed58e7cf40dea066f29cbc16b155a1c861dff9a (diff) | |
Make JavaTypeArg a sealed interface
Diffstat (limited to 'src/main/java/org/zwobble')
3 files changed, 16 insertions, 16 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java index 29bb762..1d14b29 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java @@ -422,15 +422,15 @@ public class JavaWriter implements AutoCloseable { } private static void writeTypeArg(JavaTypeArg arg, WriteString writer) throws IOException { - switch (arg.variance()) { - case INVARIANT -> { - // Do nothing. + switch (arg) { + case JavaTypeArg.Invariant invariant -> { + writeTypeRef(invariant.type(), writer); } - case SUPER -> { + case JavaTypeArg.SuperType superType -> { writer.write("? super "); + writeTypeRef(superType.type(), writer); } } - writeTypeRef(arg.type(), writer); } // == Visibility == diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeArg.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeArg.java index 6bbee59..8253275 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeArg.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeArg.java @@ -1,11 +1,17 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaTypeArg(JavaTypeVariance variance, JavaTypeRef type) { - public static JavaTypeArg invariant(JavaTypeRef type) { - return new JavaTypeArg(JavaTypeVariance.INVARIANT, type); +public sealed interface JavaTypeArg { + static JavaTypeArg invariant(JavaTypeRef type) { + return new Invariant(type); } - public static JavaTypeArg superType(JavaTypeRef type) { - return new JavaTypeArg(JavaTypeVariance.SUPER, type); + record Invariant(JavaTypeRef type) implements JavaTypeArg { + } + + static JavaTypeArg superType(JavaTypeRef type) { + return new SuperType(type); + } + + record SuperType(JavaTypeRef type) implements JavaTypeArg { } } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeVariance.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeVariance.java deleted file mode 100644 index 00a671d..0000000 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeVariance.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.zwobble.hobgoblin.compiler.output.lang.java.ast; - -public enum JavaTypeVariance { - INVARIANT, - SUPER -} |
