From 539e3cd702ec5f1b158d13db8f71e4ecb8d080bc Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 21 Jul 2023 16:39:16 +0100 Subject: Add byte type to Patio --- .../java/org/shedlang/compiler/patio/ast/PatioSerializer.java | 3 +++ .../org/shedlang/compiler/patio/ast/types/PatioByteType.java | 5 +++++ .../java/org/shedlang/compiler/patio/ast/types/PatioType.java | 2 +- .../java/org/shedlang/compiler/patio/ast/types/PatioTypes.java | 1 + .../java/org/shedlang/compiler/patio/PatioSerializerTests.java | 9 +++++++++ 5 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/patio/ast/types/PatioByteType.java (limited to 'src') diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java index 5a075ab6..59be2821 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java @@ -261,6 +261,9 @@ public class PatioSerializer { case PatioBoolType boolType -> treeIdentifier("bool"); + case PatioByteType byteType -> + treeIdentifier("byte"); + case PatioDataPointerType dataPointerType -> treeIdentifier("data-ptr"); diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioByteType.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioByteType.java new file mode 100644 index 00000000..5159512d --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioByteType.java @@ -0,0 +1,5 @@ +package org.shedlang.compiler.patio.ast.types; + +public record PatioByteType() implements PatioType { + static final PatioByteType INSTANCE = new PatioByteType(); +} diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java index fe90466f..b3a1bfa5 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java @@ -1,4 +1,4 @@ package org.shedlang.compiler.patio.ast.types; -public sealed interface PatioType permits PatioBoolType, PatioDataPointerType, PatioFunctionPointerType, PatioIntType, PatioVoidType { +public sealed interface PatioType permits PatioBoolType, PatioByteType, PatioDataPointerType, PatioFunctionPointerType, PatioIntType, PatioVoidType { } diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java index 35f82222..edf24ef0 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java @@ -5,6 +5,7 @@ public class PatioTypes { } public static final PatioBoolType BOOL = PatioBoolType.INSTANCE; + public static final PatioByteType BYTE = PatioByteType.INSTANCE; public static final PatioDataPointerType DATA_POINTER = PatioDataPointerType.INSTANCE; public static final PatioFunctionPointerType FUNCTION_POINTER = PatioFunctionPointerType.INSTANCE; public static final PatioIntType INT = PatioIntType.INSTANCE; diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java index e8f8fdd5..3ae6d5d1 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java @@ -344,6 +344,15 @@ public class PatioSerializerTests { assertThat(string, equalTo("bool")); } + @Test + public void canSerializeByteType() { + var type = PatioTypes.BYTE; + + var string = PatioTesting.serializeType(type); + + assertThat(string, equalTo("byte")); + } + @Test public void canSerializeDataPointerType() { var type = PatioTypes.DATA_POINTER; -- cgit v1.2.3