From 49560f36988842341a97fce7f81a5041fb1dd0d4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 3 Jan 2024 21:24:25 +0000 Subject: Rename StructuredType to ConstructibleType --- .../java/org/shedlang/compiler/typechecker/TypeChecker.java | 2 +- src/main/java/org/shedlang/compiler/types/ConstructedType.java | 2 +- .../java/org/shedlang/compiler/types/ConstructibleType.java | 5 +++++ src/main/java/org/shedlang/compiler/types/StructType.java | 2 +- src/main/java/org/shedlang/compiler/types/StructuredType.java | 5 ----- src/main/java/org/shedlang/compiler/types/SumType.java | 2 +- src/main/java/org/shedlang/compiler/types/Type.java | 2 +- src/main/java/org/shedlang/compiler/types/TypeConstructor.java | 2 +- .../java/org/shedlang/compiler/types/TypeOrConstructor.java | 10 +++++----- .../java/org/shedlang/compiler/types/TypeSubstitution.java | 2 +- src/main/java/org/shedlang/compiler/types/Types.java | 2 +- 11 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 src/main/java/org/shedlang/compiler/types/ConstructibleType.java delete mode 100644 src/main/java/org/shedlang/compiler/types/StructuredType.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index 8ac346a3..37fd18b3 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -2244,7 +2244,7 @@ public class TypeChecker { )); } - private static TypeOrConstructor createTypeOrConstructor( + private static TypeOrConstructor createTypeOrConstructor( Optional> untypedTypeLevelParamNodes, T type, Scope scope diff --git a/src/main/java/org/shedlang/compiler/types/ConstructedType.java b/src/main/java/org/shedlang/compiler/types/ConstructedType.java index daf7bcb4..b56e6a85 100644 --- a/src/main/java/org/shedlang/compiler/types/ConstructedType.java +++ b/src/main/java/org/shedlang/compiler/types/ConstructedType.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; -public sealed interface ConstructedType extends Type permits ConstructedStructType, ConstructedSumType { +public sealed interface ConstructedType extends Type permits ConstructedStructType, ConstructedSumType { TypeConstructor constructor(); List args(); diff --git a/src/main/java/org/shedlang/compiler/types/ConstructibleType.java b/src/main/java/org/shedlang/compiler/types/ConstructibleType.java new file mode 100644 index 00000000..28cc62a0 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/types/ConstructibleType.java @@ -0,0 +1,5 @@ +package org.shedlang.compiler.types; + +public sealed interface ConstructibleType extends Type permits StructType, SumType { + String name(); +} diff --git a/src/main/java/org/shedlang/compiler/types/StructType.java b/src/main/java/org/shedlang/compiler/types/StructType.java index 04e42057..fbde821f 100644 --- a/src/main/java/org/shedlang/compiler/types/StructType.java +++ b/src/main/java/org/shedlang/compiler/types/StructType.java @@ -3,7 +3,7 @@ package org.shedlang.compiler.types; /** * A set of named fields. */ -public record StructType(NamespaceName namespaceName, String name) implements StructuredType { +public record StructType(NamespaceName namespaceName, String name) implements ConstructibleType { @Override public String describe() { return namespaceName.toString() + "." + name; diff --git a/src/main/java/org/shedlang/compiler/types/StructuredType.java b/src/main/java/org/shedlang/compiler/types/StructuredType.java deleted file mode 100644 index bc836379..00000000 --- a/src/main/java/org/shedlang/compiler/types/StructuredType.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.shedlang.compiler.types; - -public sealed interface StructuredType extends Type permits StructType, SumType { - String name(); -} diff --git a/src/main/java/org/shedlang/compiler/types/SumType.java b/src/main/java/org/shedlang/compiler/types/SumType.java index 08fef92f..675135c8 100644 --- a/src/main/java/org/shedlang/compiler/types/SumType.java +++ b/src/main/java/org/shedlang/compiler/types/SumType.java @@ -3,7 +3,7 @@ package org.shedlang.compiler.types; /** * A discriminated union of several different types. */ -public record SumType(NamespaceName namespaceName, String name) implements StructuredType { +public record SumType(NamespaceName namespaceName, String name) implements ConstructibleType { @Override public String describe() { return namespaceName.toString() + "." + name; diff --git a/src/main/java/org/shedlang/compiler/types/Type.java b/src/main/java/org/shedlang/compiler/types/Type.java index f6f51b1e..cdb7ed0a 100644 --- a/src/main/java/org/shedlang/compiler/types/Type.java +++ b/src/main/java/org/shedlang/compiler/types/Type.java @@ -6,5 +6,5 @@ package org.shedlang.compiler.types; * found through auxiliary data. */ public sealed interface Type extends TypeLevelValue - permits BoolType, BottomType, ConstructedType, FunctionType, IntType, NamespaceType, StringType, StructuredType, TopType, TupleType, TypeLevelValueType, TypeParam, UnitType { + permits BoolType, BottomType, ConstructedType, ConstructibleType, FunctionType, IntType, NamespaceType, StringType, TopType, TupleType, TypeLevelValueType, TypeParam, UnitType { } diff --git a/src/main/java/org/shedlang/compiler/types/TypeConstructor.java b/src/main/java/org/shedlang/compiler/types/TypeConstructor.java index a43001bc..ba4b44b9 100644 --- a/src/main/java/org/shedlang/compiler/types/TypeConstructor.java +++ b/src/main/java/org/shedlang/compiler/types/TypeConstructor.java @@ -2,7 +2,7 @@ package org.shedlang.compiler.types; import java.util.List; -public record TypeConstructor( +public record TypeConstructor( List params, T genericType ) implements TypeLevelValue { diff --git a/src/main/java/org/shedlang/compiler/types/TypeOrConstructor.java b/src/main/java/org/shedlang/compiler/types/TypeOrConstructor.java index 8c040c2d..24d4ae48 100644 --- a/src/main/java/org/shedlang/compiler/types/TypeOrConstructor.java +++ b/src/main/java/org/shedlang/compiler/types/TypeOrConstructor.java @@ -1,18 +1,18 @@ package org.shedlang.compiler.types; -public sealed interface TypeOrConstructor { - static TypeOrConstructor type(T value) { +public sealed interface TypeOrConstructor { + static TypeOrConstructor type(T value) { return new Type<>(value); } - static TypeOrConstructor constructor(TypeConstructor value) { + static TypeOrConstructor constructor(TypeConstructor value) { return new Constructor<>(value); } T toType(); org.shedlang.compiler.types.Type toMetaType(); - record Type(T value) implements TypeOrConstructor { + record Type(T value) implements TypeOrConstructor { @Override public T toType() { return value; @@ -24,7 +24,7 @@ public sealed interface TypeOrConstructor { } } - record Constructor(TypeConstructor value) implements TypeOrConstructor { + record Constructor(TypeConstructor value) implements TypeOrConstructor { @Override public T toType() { return value.genericType(); diff --git a/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java b/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java index db6d554f..6a4bc45b 100644 --- a/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java +++ b/src/main/java/org/shedlang/compiler/types/TypeSubstitution.java @@ -94,7 +94,7 @@ public class TypeSubstitution { } private static < - T extends StructuredType, + T extends ConstructibleType, TConstructedType extends ConstructedType > TConstructedType substituteConstructedType( BiFunction, List, TConstructedType> createConstructedType, diff --git a/src/main/java/org/shedlang/compiler/types/Types.java b/src/main/java/org/shedlang/compiler/types/Types.java index dbf5b441..191f9481 100644 --- a/src/main/java/org/shedlang/compiler/types/Types.java +++ b/src/main/java/org/shedlang/compiler/types/Types.java @@ -42,7 +42,7 @@ public class Types { return new TypeLevelValueType(typeConstructor); } - public static TypeConstructor typeConstructor( + public static TypeConstructor typeConstructor( List params, T genericType ) { -- cgit v1.2.3