aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-18 13:04:12 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-18 13:04:12 +0100
commit16968c511418dcc4e5e145feb3dd8cf2a952e7e3 (patch)
tree8fef247e24a01203c197c51002b0df32b0465ef0 /src/test/java
parentb9955558c297cd5d76452600ce7ba98a29498118 (diff)
Create separate namespace import function
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerCallTests.java4
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java15
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java8
3 files changed, 24 insertions, 3 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerCallTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerCallTests.java
index 39c05179..f43c7bf6 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerCallTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCompilerCallTests.java
@@ -50,7 +50,7 @@ public class LlvmCompilerCallTests {
),
instanceOf(
LlvmCall.class,
- has("target", x -> x.target(), isLlvmVariableLocal("tmp__0")),
+ has("target", x -> x.target(), isOptionalOf(isLlvmVariableLocal("tmp__0"))),
has("returnType", x -> x.returnType(), equalTo(LlvmCompilerTypes.VALUE_TYPE)),
has("functionPointer", x -> x.functionPointer(), isLlvmVariableLocal("closureFunctionPointer__0")),
has("args", x -> x.args(), isSequence(
@@ -105,7 +105,7 @@ public class LlvmCompilerCallTests {
),
instanceOf(
LlvmCall.class,
- has("target", x -> x.target(), isLlvmVariableLocal("tmp__0")),
+ has("target", x -> x.target(), isOptionalOf(isLlvmVariableLocal("tmp__0"))),
has("returnType", x -> x.returnType(), equalTo(LlvmCompilerTypes.VALUE_TYPE)),
has("functionPointer", x -> x.functionPointer(), isLlvmVariableLocal("closureFunctionPointer__0")),
has("args", x -> x.args(), isSequence(
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
index 08cefa81..7e8f02cf 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
@@ -26,7 +26,20 @@ public class LlvmIrSerializerInstructionTests {
}
@Test
- public void canSerializeCallWithNoArgs() {
+ public void canSerializeCallWithNoTargetAndNoArgs() {
+ var instruction = LlvmIr.call(
+ LlvmTypes.INT_64,
+ LlvmIr.variableLocal("f"),
+ List.of()
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("call i64 %f()"));
+ }
+
+ @Test
+ public void canSerializeCallWithTarget() {
var instruction = LlvmIr.call(
LlvmIr.variableLocal("x"),
LlvmTypes.INT_64,
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 de778a00..a1eb8397 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
@@ -38,6 +38,14 @@ public class LlvmIr {
}
public static LlvmCall call(
+ LlvmType returnType,
+ LlvmOperand functionPointer,
+ List<LlvmTypedOperand> args
+ ) {
+ return new LlvmCall(Optional.empty(), returnType, functionPointer, args);
+ }
+
+ public static LlvmCall call(
LlvmVariable target,
LlvmType returnType,
LlvmOperand functionPointer,