aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-17 10:41:39 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-17 10:41:39 +0100
commitc70a0a1ecbd562f8e13c6c96b28bcd15d3cd2b62 (patch)
tree6b2fcde0b714ec278267619e5b92fd745dc721d6 /src/test/java
parent80c1575e7f2956111f1d62dbba88396d0ca8cf29 (diff)
Serialize LLVM modules
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java40
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java4
2 files changed, 44 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java
new file mode 100644
index 00000000..1f32ddf3
--- /dev/null
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java
@@ -0,0 +1,40 @@
+package org.shedlang.compiler.backends.llvm.ir;
+
+import org.junit.jupiter.api.Test;
+import org.shedlang.compiler.backends.llvm.ir.ast.LlvmGlobalDefinition;
+import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
+import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
+
+import java.util.List;
+
+import static org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializerTesting.serializeToString;
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public class LlvmIrSerializerModuleTests {
+ @Test
+ public void canSerializeModules() {
+ var module = LlvmIr.module(List.of(
+ new LlvmGlobalDefinition(
+ "x",
+ LlvmTypes.INT_64,
+ LlvmIr.operandInt(42),
+ false,
+ false,
+ false
+ ),
+ new LlvmGlobalDefinition(
+ "y",
+ LlvmTypes.INT_64,
+ LlvmIr.operandInt(42),
+ false,
+ false,
+ false
+ )
+ ));
+
+ var result = serializeToString(module, LlvmIrSerializer::serializeModule);
+
+ assertThat(result, equalTo("@x = global i64 42\n@y = global i64 42\n"));
+ }
+}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java
index eb28440c..069b938e 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java
@@ -72,6 +72,10 @@ public class LlvmIr {
return new LlvmLoad(target, type, pointer);
}
+ public static LlvmModule module(List<LlvmTopLevelEntity> topLevelEntities) {
+ return new LlvmModule(topLevelEntities);
+ }
+
public static LlvmOperand operandArray(
LlvmType type,
List<LlvmOperand> elements