diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-17 10:41:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-17 10:41:39 +0100 |
| commit | c70a0a1ecbd562f8e13c6c96b28bcd15d3cd2b62 (patch) | |
| tree | 6b2fcde0b714ec278267619e5b92fd745dc721d6 /src/test/java | |
| parent | 80c1575e7f2956111f1d62dbba88396d0ca8cf29 (diff) | |
Serialize LLVM modules
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java | 40 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 4 |
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 |
