From c73f1e515363ef16ea2513533f11710b78643693 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 8 Aug 2026 22:23:27 +0100 Subject: Add notion of SimpleType --- src/main/java/org/zwobble/hobgoblin/compiler/types/EnumType.java | 2 +- .../java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java | 2 +- src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleType.java | 5 +++++ src/main/java/org/zwobble/hobgoblin/compiler/types/StructType.java | 2 +- src/main/java/org/zwobble/hobgoblin/compiler/types/SumType.java | 2 +- src/main/java/org/zwobble/hobgoblin/compiler/types/Type.java | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleType.java (limited to 'src/main') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/EnumType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/EnumType.java index bd50d2b..beea9ca 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/EnumType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/EnumType.java @@ -1,6 +1,6 @@ package org.zwobble.hobgoblin.compiler.types; -public record EnumType(NamespaceName namespaceName, String name) implements Type { +public record EnumType(NamespaceName namespaceName, String name) implements Type, SimpleType { @Override public String describe() { return namespaceName.toString() + "." + name; diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java index cc6e3c8..7bf9dc1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java @@ -1,6 +1,6 @@ package org.zwobble.hobgoblin.compiler.types; -public record SimpleNativeType(NamespaceName namespaceName, String name) implements Type, ConstructibleType { +public record SimpleNativeType(NamespaceName namespaceName, String name) implements Type, ConstructibleType, SimpleType { public static SimpleNativeType builtin(String name) { return new SimpleNativeType(NamespaceName.of(), name); } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleType.java new file mode 100644 index 0000000..2160802 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleType.java @@ -0,0 +1,5 @@ +package org.zwobble.hobgoblin.compiler.types; + +public sealed interface SimpleType extends Type permits EnumType, SimpleNativeType, StructType, SumType { + NamespaceName namespaceName(); +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/StructType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/StructType.java index a5b50ab..5012203 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/StructType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/StructType.java @@ -1,6 +1,6 @@ package org.zwobble.hobgoblin.compiler.types; -public record StructType(NamespaceName namespaceName, String name) implements Type { +public record StructType(NamespaceName namespaceName, String name) implements Type, SimpleType { @Override public String describe() { return namespaceName.toString() + "." + name; diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/SumType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/SumType.java index 2517b6a..117277d 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/SumType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/SumType.java @@ -1,6 +1,6 @@ package org.zwobble.hobgoblin.compiler.types; -public record SumType(NamespaceName namespaceName, String name) implements Type { +public record SumType(NamespaceName namespaceName, String name) implements Type, SimpleType { @Override public String describe() { return namespaceName.toString() + "." + name; diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/Type.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/Type.java index b82de7d..b483209 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/Type.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/Type.java @@ -1,5 +1,5 @@ package org.zwobble.hobgoblin.compiler.types; -public sealed interface Type extends TypeLevelValue permits ConstructedNativeType, ConstructibleType, EnumType, SimpleNativeType, StructType, SumType, TypeLevelValueType, TypeParam { +public sealed interface Type extends TypeLevelValue permits ConstructedNativeType, ConstructibleType, EnumType, SimpleNativeType, SimpleType, StructType, SumType, TypeLevelValueType, TypeParam { String name(); } -- cgit v1.2.3