aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-17 19:27:40 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-17 19:35:40 +0100
commitead99d70d1eeb48d3b2ca7dc757fb68a6c94e64a (patch)
tree5457dd491d3743c448238a90a46c7f0d9e67ba3a /src/test/java
parentabee865f5088ac9812b71f929e07db5f60d9859c (diff)
Support external global definitions
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerPushStringTests.java4
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java26
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerModuleTests.java5
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