diff options
10 files changed, 39 insertions, 39 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java index 873ecfd..7c2c6cc 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java @@ -1,7 +1,7 @@ package org.zwobble.hobgoblin.compiler; import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode; -import org.zwobble.hobgoblin.compiler.builtins.BuiltinTypes; +import org.zwobble.hobgoblin.compiler.builtins.NativeTypes; import org.zwobble.hobgoblin.compiler.config.ProjectConfig; import org.zwobble.hobgoblin.compiler.parser.Parser; import org.zwobble.hobgoblin.compiler.typechecker.TypeChecker; @@ -37,7 +37,7 @@ public class HobgoblinCompiler { var untypedNamespaceNode = Parser.parseNamespace(sourceText, namespaceName); var typeCheckerContext = TypeCheckerGlobalContext.initial(); - typeCheckerContext.addBuiltinScalarType(BuiltinTypes.INT_32); + typeCheckerContext.addNativeType(NativeTypes.INT_32); var typedNamespaceNode = TypeChecker.typeCheckNamespace(untypedNamespaceNode, typeCheckerContext); typedNamespaceNodes.add(typedNamespaceNode); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/BuiltinTypes.java b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/BuiltinTypes.java deleted file mode 100644 index 9ed5fcf..0000000 --- a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/BuiltinTypes.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.zwobble.hobgoblin.compiler.builtins; - -import org.zwobble.hobgoblin.compiler.types.ScalarType; - -public class BuiltinTypes { - public static ScalarType INT_32 = new ScalarType("Int32"); -} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java new file mode 100644 index 0000000..7a2f181 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java @@ -0,0 +1,7 @@ +package org.zwobble.hobgoblin.compiler.builtins; + +import org.zwobble.hobgoblin.compiler.types.NativeType; + +public class NativeTypes { + public static NativeType INT_32 = new NativeType("Int32"); +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java index 8fa60a7..2f5c620 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java @@ -4,7 +4,7 @@ import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedStructDefinitionNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedSumDefinitionNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTypeLevelExpressionNode; -import org.zwobble.hobgoblin.compiler.builtins.BuiltinTypes; +import org.zwobble.hobgoblin.compiler.builtins.NativeTypes; import org.zwobble.hobgoblin.compiler.config.OutputConfig; import org.zwobble.hobgoblin.compiler.output.CodeWriter; import org.zwobble.hobgoblin.compiler.output.generators.Generator; @@ -132,20 +132,20 @@ public class JavaTypesGenerator implements Generator { private JavaTypeRef generateTypeRef(Type type) { return switch (type) { - case StructType structType -> - new JavaTypeRef(namespaceToJavaPackageParts(structType.namespaceName()), structType.name()); - - case SumType sumType -> - new JavaTypeRef(namespaceToJavaPackageParts(sumType.namespaceName()), sumType.name()); - - case ScalarType scalarType -> { - if (type.equals(BuiltinTypes.INT_32)) { + case NativeType nativeType -> { + if (type.equals(NativeTypes.INT_32)) { yield new JavaTypeRef(List.of(), "int"); } else { throw new UnsupportedOperationException("TODO"); } } + case StructType structType -> + new JavaTypeRef(namespaceToJavaPackageParts(structType.namespaceName()), structType.name()); + + case SumType sumType -> + new JavaTypeRef(namespaceToJavaPackageParts(sumType.namespaceName()), sumType.name()); + case TypeLevelValueType typeLevelValueType -> throw new UnsupportedOperationException("TODO"); }; diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerGlobalContext.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerGlobalContext.java index 849da2f..e98afc0 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerGlobalContext.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerGlobalContext.java @@ -1,7 +1,7 @@ package org.zwobble.hobgoblin.compiler.typechecker; import org.zwobble.hobgoblin.compiler.types.NamespaceName; -import org.zwobble.hobgoblin.compiler.types.ScalarType; +import org.zwobble.hobgoblin.compiler.types.NativeType; import org.zwobble.hobgoblin.compiler.types.Type; import org.zwobble.hobgoblin.compiler.types.TypeLevelValueType; @@ -9,7 +9,7 @@ import java.util.HashMap; import java.util.Map; public class TypeCheckerGlobalContext { - private final Map<String, Type> builtins = new HashMap<>(); + private final Map<String, Type> nativeTypes = new HashMap<>(); public static TypeCheckerGlobalContext initial() { return new TypeCheckerGlobalContext(); @@ -18,11 +18,11 @@ public class TypeCheckerGlobalContext { private TypeCheckerGlobalContext() { } - public void addBuiltinScalarType(ScalarType type) { - this.builtins.put(type.name(), new TypeLevelValueType(type)); + public void addNativeType(NativeType type) { + this.nativeTypes.put(type.name(), new TypeLevelValueType(type)); } public TypeCheckerNamespaceContext enterNamespace(NamespaceName namespaceName) { - return TypeCheckerNamespaceContext.initial(namespaceName, this.builtins); + return TypeCheckerNamespaceContext.initial(namespaceName, this.nativeTypes); } } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java index 353209b..b18267b 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java @@ -10,9 +10,9 @@ import java.util.stream.Collectors; public class TypeCheckerNamespaceContext { public static TypeCheckerNamespaceContext initial( NamespaceName namespaceName, - Map<String, Type> builtins + Map<String, Type> nativeTypes ) { - var variables = builtins.entrySet().stream() + var variables = nativeTypes.entrySet().stream() .collect(Collectors.toMap( entry -> entry.getKey(), entry -> Variable.defined(entry.getValue()) diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/ScalarType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/NativeType.java index 22032a1..2a45a1f 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/ScalarType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/NativeType.java @@ -1,6 +1,6 @@ package org.zwobble.hobgoblin.compiler.types; -public record ScalarType(String name) implements Type { +public record NativeType(String name) implements Type { @Override public String describe() { return 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 4155d05..eeccb8b 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 ScalarType, StructType, SumType, TypeLevelValueType { +public sealed interface Type extends TypeLevelValue permits NativeType, StructType, SumType, TypeLevelValueType { String name(); } diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java index aec039b..2409b65 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java @@ -11,7 +11,7 @@ import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode; import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode; import org.zwobble.hobgoblin.compiler.sources.NullSource; import org.zwobble.hobgoblin.compiler.types.NamespaceName; -import org.zwobble.hobgoblin.compiler.types.ScalarType; +import org.zwobble.hobgoblin.compiler.types.NativeType; import org.zwobble.hobgoblin.compiler.types.StructType; import org.zwobble.hobgoblin.compiler.types.TypeLevelValueType; @@ -45,8 +45,8 @@ public class TypeCheckerStructDefinitionTests { @Test public void fieldsAreTypeChecked() { - var int32Type = new ScalarType("Int32"); - var int64Type = new ScalarType("Int64"); + var int32Type = new NativeType("Int32"); + var int64Type = new NativeType("Int64"); var untyped = new UntypedStructDefinitionNode( "X", List.of( @@ -92,7 +92,7 @@ public class TypeCheckerStructDefinitionTests { @Test public void structCanUseTypeDefinedLater() { - var int32Type = new ScalarType("Int32"); + var int32Type = new NativeType("Int32"); var namespaceName = NamespaceName.of("a", "b"); var untyped = new UntypedNamespaceNode( namespaceName, @@ -115,7 +115,7 @@ public class TypeCheckerStructDefinitionTests { NullSource.INSTANCE ); var context = TypeCheckerContextArb.globalContext(); - context.addBuiltinScalarType(int32Type); + context.addNativeType(int32Type); var typed = TypeChecker.typeCheckNamespace(untyped, context); diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java index 76572a4..b2dcc62 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java @@ -3,7 +3,7 @@ package org.zwobble.hobgoblin.compiler.typechecker; import org.junit.jupiter.api.Test; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTypeLevelReferenceNode; import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedArb; -import org.zwobble.hobgoblin.compiler.types.ScalarType; +import org.zwobble.hobgoblin.compiler.types.NativeType; import org.zwobble.hobgoblin.compiler.types.TypeLevelValueType; import org.zwobble.hobgoblin.compiler.types.TypeSet; @@ -44,8 +44,8 @@ public class TypeCheckerTypeLevelReferenceTests { var untyped = UntypedArb.typeLevelReference("X"); var context = TypeCheckerContextArb.namespaceContext(); context.declare("X"); - var scalarType = new ScalarType("Int"); - context.define("X", scalarType); + var nativeType = new NativeType("Int"); + context.define("X", nativeType); var error = assertThrows( UnexpectedTypeError.class, @@ -53,7 +53,7 @@ public class TypeCheckerTypeLevelReferenceTests { ); assertThat(error.expected(), equalTo(new TypeSet.MetaType())); - assertThat(error.actual(), equalTo(scalarType)); + assertThat(error.actual(), equalTo(nativeType)); } @Test @@ -61,15 +61,15 @@ public class TypeCheckerTypeLevelReferenceTests { var untyped = UntypedArb.typeLevelReference("X"); var context = TypeCheckerContextArb.namespaceContext(); context.declare("X"); - var scalarType = new ScalarType("Int"); - context.define("X", new TypeLevelValueType(scalarType)); + var nativeType = new NativeType("Int"); + context.define("X", new TypeLevelValueType(nativeType)); var typed = TypeChecker.typeCheckTypeLevelExpression(untyped, context); assertThat(typed, instanceOf( TypedTypeLevelReferenceNode.class, has("name", TypedTypeLevelReferenceNode::name, equalTo("X")), - has("value", TypedTypeLevelReferenceNode::value, equalTo(scalarType)) + has("value", TypedTypeLevelReferenceNode::value, equalTo(nativeType)) )); } } |
