From 88fb47120e293fad7cf3ecf5439a28136cb93eb2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 3 Mar 2025 18:37:40 +0000 Subject: Add Shid instruction to declare native type --- .../java/org/shedlang/compiler/shid/ShidSerializerTests.java | 12 ++++++++++++ .../java/org/shedlang/compiler/shid/instructions/Shid.java | 10 ++++++++++ 2 files changed, 22 insertions(+) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java b/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java index 3fc45b0b..89bfd1f7 100644 --- a/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java @@ -65,6 +65,18 @@ public class ShidSerializerTests { )""")); } + @Test + public void canSerializeDeclareNativeType() { + var instruction = Shid.declareNativeType( + Types.nativeType(NamespaceName.of("Example", "Project"), "Array") + ); + + var string = serialize(instruction); + + assertThat(string, equalTo(""" + (declare-native-type "Example/Project.Array")""")); + } + @Test public void canSerializeDefineEffect() { var instruction = Shid.defineEffect( diff --git a/src/test/java/org/shedlang/compiler/shid/instructions/Shid.java b/src/test/java/org/shedlang/compiler/shid/instructions/Shid.java index 51f8ba00..10a020bd 100644 --- a/src/test/java/org/shedlang/compiler/shid/instructions/Shid.java +++ b/src/test/java/org/shedlang/compiler/shid/instructions/Shid.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.shid.instructions; import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.types.NamespaceName; +import org.shedlang.compiler.types.SimpleNativeType; import org.shedlang.compiler.types.SimpleStructType; import org.shedlang.compiler.types.UserDefinedEffect; @@ -24,6 +25,15 @@ public class Shid { return new ShidCall(positionalArgCount, namedArgNames, Sources.NULL); } + public static ShidInstruction declareNativeType( + SimpleNativeType type + ) { + return new ShidDeclareNativeType( + type, + Sources.NULL + ); + } + public static ShidInstruction defineEffect(UserDefinedEffect effect) { return new ShidDefineEffect(effect, Sources.NULL); } -- cgit v1.2.3