diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-08 22:23:27 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-08 22:23:27 +0100 |
| commit | c73f1e515363ef16ea2513533f11710b78643693 (patch) | |
| tree | fcc36537e312cb7cf5b3fc0a6000853a2e82fdbc /src/main/java | |
| parent | 9eae31ae92dd7691cb0ed19bba3913a9229af311 (diff) | |
Add notion of SimpleType
Diffstat (limited to 'src/main/java')
6 files changed, 10 insertions, 5 deletions
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(); } |
