diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-17 19:27:40 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-17 19:35:40 +0100 |
| commit | ead99d70d1eeb48d3b2ca7dc757fb68a6c94e64a (patch) | |
| tree | 5457dd491d3743c448238a90a46c7f0d9e67ba3a /src/test/java | |
| parent | abee865f5088ac9812b71f929e07db5f60d9859c (diff) | |
Support external global definitions
Diffstat (limited to 'src/test/java')
3 files changed, 27 insertions, 8 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerPushStringTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerPushStringTests.java index 9a6324a8..b62ac757 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerPushStringTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerPushStringTests.java @@ -36,7 +36,7 @@ public class LlvmCompilerPushStringTests { LlvmTypes.INT_64, LlvmTypes.array(5, LlvmTypes.INT_8) )))), - has("value", x -> x.value(), equalTo(LlvmIr.operandStructure(List.of( + has("value", x -> x.value(), isOptionalOf(equalTo(LlvmIr.operandStructure(List.of( LlvmIr.typedOperand(LlvmTypes.INT_64, LlvmIr.operandInt(5)), LlvmIr.typedOperand( LlvmTypes.array(5, LlvmTypes.INT_8), @@ -48,7 +48,7 @@ public class LlvmCompilerPushStringTests { LlvmIr.operandInt(111) )) ) - )))), + ))))), has("constant", x -> x.constant(), equalTo(true)), has("isPrivate", x -> x.isPrivate(), equalTo(true)), has("unnamedAddr", x -> x.unnamedAddr(), equalTo(true)) diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java index c2460540..85d94127 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java @@ -5,6 +5,8 @@ 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.Optional; + import static org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializerTesting.serializeToString; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -15,7 +17,7 @@ public class LlvmIrSerializerGlobalDefinitionTests { var definition = new LlvmGlobalDefinition( "x", LlvmTypes.INT_64, - LlvmIr.operandInt(42), + Optional.of(LlvmIr.operandInt(42)), false, false, false @@ -27,11 +29,27 @@ public class LlvmIrSerializerGlobalDefinitionTests { } @Test + public void canSerializeExternal() { + var definition = new LlvmGlobalDefinition( + "x", + LlvmTypes.INT_64, + Optional.empty(), + false, + false, + false + ); + + var result = serializeToString(definition, LlvmIrSerializer::serializeTopLevelEntity); + + assertThat(result, equalTo("@x = external global i64\n")); + } + + @Test public void canSerializeConstant() { var definition = new LlvmGlobalDefinition( "x", LlvmTypes.INT_64, - LlvmIr.operandInt(42), + Optional.of(LlvmIr.operandInt(42)), true, false, false @@ -47,7 +65,7 @@ public class LlvmIrSerializerGlobalDefinitionTests { var definition = new LlvmGlobalDefinition( "x", LlvmTypes.INT_64, - LlvmIr.operandInt(42), + Optional.of(LlvmIr.operandInt(42)), false, true, false @@ -63,7 +81,7 @@ public class LlvmIrSerializerGlobalDefinitionTests { var definition = new LlvmGlobalDefinition( "x", LlvmTypes.INT_64, - LlvmIr.operandInt(42), + Optional.of(LlvmIr.operandInt(42)), false, false, true 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 index 1f32ddf3..c9cf5e95 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java @@ -6,6 +6,7 @@ import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; import java.util.List; +import java.util.Optional; import static org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializerTesting.serializeToString; import static org.zwobble.precisely.AssertThat.assertThat; @@ -18,7 +19,7 @@ public class LlvmIrSerializerModuleTests { new LlvmGlobalDefinition( "x", LlvmTypes.INT_64, - LlvmIr.operandInt(42), + Optional.of(LlvmIr.operandInt(42)), false, false, false @@ -26,7 +27,7 @@ public class LlvmIrSerializerModuleTests { new LlvmGlobalDefinition( "y", LlvmTypes.INT_64, - LlvmIr.operandInt(42), + Optional.of(LlvmIr.operandInt(42)), false, false, false |
