summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java10
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeArg.java16
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeVariance.java6
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
-}