aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-16 15:20:50 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-16 15:20:50 +0100
commit410d51abc96defa8b16d1041e9cfe8668221798a (patch)
treeb9c164f0d13b56041dc2e081a3d12889426822eb /src/test/java
parentd2d6019cabed6e04a04bef402442697f9c32df11 (diff)
Remove direct LLVM backend
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenCallTests.java128
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDefineFunctionTests.java85
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDiscardTests.java24
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenFieldLoadTests.java41
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIfTests.java73
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntAddTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntEqualsTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntNotEqualTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntSubTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalLoadTests.java35
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalStoreTests.java36
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceFieldStoreTests.java71
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceImportTests.java44
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushBoolTests.java32
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushIntTests.java23
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushStringTests.java57
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushUnitTests.java21
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenReturnTests.java43
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenStringAddTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java58
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/LlvmPatioExampleTests.java2
22 files changed, 1 insertions, 940 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenCallTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenCallTests.java
deleted file mode 100644
index a5c56a7b..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenCallTests.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmCall;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmGetElementPtr;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmIntToPtr;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmLoad;
-import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-
-import java.util.List;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.*;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.*;
-
-public class LlvmCodeGenCallTests {
- @Test
- public void canCallFunctionWithNoArgs() {
- var instruction = Instructions.call(0, List.of());
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("x"))
- .push(LlvmIr.variableLocal("f"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence(
- instanceOf(
- LlvmIntToPtr.class,
- has("target", x -> x.target(), isLlvmVariableLocal("closurePointer__0")),
- has("sourceType", x -> x.sourceType(), equalTo(LlvmCodeGenTypes.VALUE_TYPE)),
- has("value", x -> x.value(), isLlvmVariableLocal("f"))
- ),
- instanceOf(
- LlvmGetElementPtr.class,
- has("target", x -> x.target(), isLlvmVariableLocal("closureFunctionPointerPointer__0")),
- has("pointerType", x -> x.pointerType(), equalTo(LlvmCodeGenClosures.CALLABLE_TYPES.closurePointer())),
- has("pointer", x -> x.pointer(), isLlvmVariableLocal("closurePointer__0")),
- has("indexes", x -> x.indexes(), isSequence(
- isLlvmTypedOperand(LlvmTypes.INT_64, isLlvmOperandInt(0)),
- isLlvmTypedOperand(LlvmTypes.INT_32, isLlvmOperandInt(0))
- ))
- ),
- instanceOf(
- LlvmLoad.class,
- has("target", x -> x.target(), isLlvmVariableLocal("closureFunctionPointer__0")),
- has("type", x -> x.type(), equalTo(LlvmCodeGenClosures.CALLABLE_TYPES.closureFunctionPointer())),
- has("pointer", x -> x.pointer(), isLlvmVariableLocal("closureFunctionPointerPointer__0"))
- ),
- instanceOf(
- LlvmCall.class,
- has("target", x -> x.target(), isOptionalOf(isLlvmVariableLocal("tmp__0"))),
- has("returnType", x -> x.returnType(), equalTo(LlvmCodeGenTypes.VALUE_TYPE)),
- has("functionPointer", x -> x.functionPointer(), isLlvmVariableLocal("closureFunctionPointer__0")),
- has("args", x -> x.args(), isSequence(
- isLlvmTypedOperand(
- LlvmCodeGenClosures.CALLABLE_TYPES.closurePointer(),
- isLlvmVariableLocal("closurePointer__0")
- )
- ))
- )
- ));
- assertThat(result.stack(), isSequence(
- isLlvmVariableLocal("tmp__0"),
- isLlvmVariableLocal("x")
- ));
- }
-
- @Test
- public void canCallFunctionWithArgs() {
- var instruction = Instructions.call(2, List.of("b", "a"));
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("x"))
- .push(LlvmIr.variableLocal("f"))
- .push(LlvmIr.variableLocal("positional1"))
- .push(LlvmIr.variableLocal("positional2"))
- .push(LlvmIr.variableLocal("namedB"))
- .push(LlvmIr.variableLocal("namedA"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence(
- instanceOf(
- LlvmIntToPtr.class,
- has("target", x -> x.target(), isLlvmVariableLocal("closurePointer__0")),
- has("sourceType", x -> x.sourceType(), equalTo(LlvmCodeGenTypes.VALUE_TYPE)),
- has("value", x -> x.value(), isLlvmVariableLocal("f"))
- ),
- instanceOf(
- LlvmGetElementPtr.class,
- has("target", x -> x.target(), isLlvmVariableLocal("closureFunctionPointerPointer__0")),
- has("pointerType", x -> x.pointerType(), equalTo(LlvmCodeGenClosures.CALLABLE_TYPES.closurePointer())),
- has("pointer", x -> x.pointer(), isLlvmVariableLocal("closurePointer__0")),
- has("indexes", x -> x.indexes(), isSequence(
- isLlvmTypedOperand(LlvmTypes.INT_64, isLlvmOperandInt(0)),
- isLlvmTypedOperand(LlvmTypes.INT_32, isLlvmOperandInt(0))
- ))
- ),
- instanceOf(
- LlvmLoad.class,
- has("target", x -> x.target(), isLlvmVariableLocal("closureFunctionPointer__0")),
- has("type", x -> x.type(), equalTo(LlvmCodeGenClosures.CALLABLE_TYPES.closureFunctionPointer())),
- has("pointer", x -> x.pointer(), isLlvmVariableLocal("closureFunctionPointerPointer__0"))
- ),
- instanceOf(
- LlvmCall.class,
- has("target", x -> x.target(), isOptionalOf(isLlvmVariableLocal("tmp__0"))),
- has("returnType", x -> x.returnType(), equalTo(LlvmCodeGenTypes.VALUE_TYPE)),
- has("functionPointer", x -> x.functionPointer(), isLlvmVariableLocal("closureFunctionPointer__0")),
- has("args", x -> x.args(), isSequence(
- isLlvmTypedOperand(
- LlvmCodeGenClosures.CALLABLE_TYPES.closurePointer(),
- isLlvmVariableLocal("closurePointer__0")
- ),
- isLlvmTypedOperand(LlvmCodeGenTypes.VALUE_TYPE, isLlvmVariableLocal("positional1")),
- isLlvmTypedOperand(LlvmCodeGenTypes.VALUE_TYPE, isLlvmVariableLocal("positional2")),
- isLlvmTypedOperand(LlvmCodeGenTypes.VALUE_TYPE, isLlvmVariableLocal("namedA")),
- isLlvmTypedOperand(LlvmCodeGenTypes.VALUE_TYPE, isLlvmVariableLocal("namedB"))
- ))
- )
- ));
- assertThat(result.stack(), isSequence(
- isLlvmVariableLocal("tmp__0"),
- isLlvmVariableLocal("x")
- ));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDefineFunctionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDefineFunctionTests.java
deleted file mode 100644
index 7f008681..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDefineFunctionTests.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.ast.typed.FreeVariables;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.sources.Sources;
-import org.shedlang.compiler.stackir.instructions.DefineFunctionInstruction;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-import java.util.List;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenDefineFunctionTests {
- @Test
- public void canDefineMinimalFunction(Snapshotter snapshotter) throws IOException {
- var instruction = new DefineFunctionInstruction(
- "f",
- List.of(),
- List.of(),
- FreeVariables.empty(),
- List.of(
- Instructions.pushUnit(),
- Instructions.return_()
- ),
- Sources.NULL
- );
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(LlvmCodeGenTesting.serializeContext(result));
- }
-
- @Test
- public void freeVariablesAreStoredInAndLoadedFromEnvironment(Snapshotter snapshotter) throws IOException {
- var instruction = new DefineFunctionInstruction(
- "f",
- List.of(),
- List.of(),
- FreeVariables.builder().plus("a", Sources.NULL).plus("b", Sources.NULL).build(),
- List.of(
- Instructions.localLoad("a"),
- Instructions.return_()
- ),
- Sources.NULL
- );
- var context = LlvmCodeGenContext.EMPTY
- .addShedLocal("a", LlvmIr.operandInt(1))
- .addShedLocal("b", LlvmIr.operandInt(2));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(LlvmCodeGenTesting.serializeContext(result));
- }
-
- @Test
- public void positionalAndNamedParamsAreDefined(Snapshotter snapshotter) throws IOException {
- var instruction = new DefineFunctionInstruction(
- "f",
- List.of(Instructions.param("param1"), Instructions.param("param2")),
- List.of(Instructions.param("paramA"), Instructions.param("paramB")),
- FreeVariables.builder().plus("a", Sources.NULL).plus("b", Sources.NULL).build(),
- List.of(
- Instructions.localLoad("a"),
- Instructions.localLoad("param1"),
- Instructions.intAdd(),
- Instructions.localLoad("paramA"),
- Instructions.intAdd(),
- Instructions.return_()
- ),
- Sources.NULL
- );
- var context = LlvmCodeGenContext.EMPTY
- .addShedLocal("a", LlvmIr.operandInt(1))
- .addShedLocal("b", LlvmIr.operandInt(2));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(LlvmCodeGenTesting.serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDiscardTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDiscardTests.java
deleted file mode 100644
index 799442eb..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenDiscardTests.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmOperandInt;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.isSequence;
-
-public class LlvmCodeGenDiscardTests {
- @Test
- public void discardRemovesTopElementFromStack() {
- var instruction = Instructions.discard();
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.operandInt(1))
- .push(LlvmIr.operandInt(2));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(1)));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenFieldLoadTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenFieldLoadTests.java
deleted file mode 100644
index 6bb8c5c7..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenFieldLoadTests.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableLocal;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-import org.shedlang.compiler.typechecker.TypeCheckerContext;
-import org.shedlang.compiler.types.NamespaceName;
-import org.shedlang.compiler.types.Types;
-import org.shedlang.compiler.util.P;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import static org.shedlang.compiler.backends.llvm.LlvmCodeGenTesting.serializeContext;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenFieldLoadTests {
- @Test
- public void fieldLoadPopsReceiverAndPushesFieldValue(Snapshotter snapshotter) throws IOException {
- var namespaceName = new NamespaceName(List.of("Example", "Project"));
- var instruction = Instructions.fieldLoad(namespaceName, "y");
- var typeInfo = TypeCheckerContext.EMPTY
- .addNamespaceFields(namespaceName, P.orderedMap(
- Map.entry("x", Types.INT),
- Map.entry("y", Types.INT),
- Map.entry("z", Types.INT)
- ))
- .toTypeInfo();
- var context = LlvmCodeGenContext.fromTypeInfo(typeInfo)
- .push(new LlvmVariableLocal("a"))
- .push(new LlvmVariableLocal("b"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIfTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIfTests.java
deleted file mode 100644
index 0243ae90..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIfTests.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-import java.util.List;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenIfTests {
- @Test
- public void ifIsCompiled(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.if_(
- 1,
- List.of(
- Instructions.pushInt(1),
- Instructions.pushInt(2),
- Instructions.intAdd()
- ),
- List.of(
- Instructions.pushInt(101),
- Instructions.pushInt(102),
- Instructions.intAdd()
- )
- );
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("x"))
- .push(LlvmIr.variableLocal("condition"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(LlvmCodeGenTesting.serializeContext(result));
- }
-
- @Test
- public void canCompileNestedIf(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.if_(
- 1,
- List.of(
- Instructions.pushInt(1),
- Instructions.pushInt(2),
- Instructions.intAdd()
- ),
- List.of(
- Instructions.pushBool(true),
- Instructions.if_(
- 1,
- List.of(
- Instructions.pushInt(101),
- Instructions.pushInt(102),
- Instructions.intAdd()
- ),
- List.of(
- Instructions.pushInt(201),
- Instructions.pushInt(202),
- Instructions.intAdd()
- )
- )
- )
- );
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("x"))
- .push(LlvmIr.variableLocal("condition"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(LlvmCodeGenTesting.serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntAddTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntAddTests.java
deleted file mode 100644
index e2fc5ccb..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntAddTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-
-import static org.shedlang.compiler.backends.llvm.LlvmCodeGenTesting.serializeContext;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenIntAddTests {
- @Test
- public void intAddIsCompiledToAdd(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.intAdd();
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("a"))
- .push(LlvmIr.variableLocal("b"))
- .push(LlvmIr.variableLocal("c"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntEqualsTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntEqualsTests.java
deleted file mode 100644
index be97752d..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntEqualsTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-
-import static org.shedlang.compiler.backends.llvm.LlvmCodeGenTesting.serializeContext;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenIntEqualsTests {
- @Test
- public void intEqualsIsCompiledToComparison(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.intEquals();
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("a"))
- .push(LlvmIr.variableLocal("b"))
- .push(LlvmIr.variableLocal("c"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntNotEqualTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntNotEqualTests.java
deleted file mode 100644
index b5759f61..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntNotEqualTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-
-import static org.shedlang.compiler.backends.llvm.LlvmCodeGenTesting.serializeContext;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenIntNotEqualTests {
- @Test
- public void intNotEqualIsCompiledToComparison(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.intNotEqual();
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("a"))
- .push(LlvmIr.variableLocal("b"))
- .push(LlvmIr.variableLocal("c"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntSubTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntSubTests.java
deleted file mode 100644
index dfde4836..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenIntSubTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-
-import static org.shedlang.compiler.backends.llvm.LlvmCodeGenTesting.serializeContext;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenIntSubTests {
- @Test
- public void intSubIsCompiledToSub(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.intSub();
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("a"))
- .push(LlvmIr.variableLocal("b"))
- .push(LlvmIr.variableLocal("c"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalLoadTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalLoadTests.java
deleted file mode 100644
index 6dedfd11..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalLoadTests.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmOperand;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.zwobble.precisely.Matcher;
-
-import java.util.Map;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmOperandInt;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.*;
-
-public class LlvmCodeGenLocalLoadTests {
- @Test
- public void localLoadPushsOperandFromLocalsToStack() {
- var instruction = Instructions.localLoad("x");
- var context = LlvmCodeGenContext.EMPTY
- .addShedLocal("x", LlvmIr.operandInt(42));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(42)));
- assertThat(result.shedLocalNameToOperand().entrySet(), isSequence(isLocal("x", isLlvmOperandInt(42))));
- }
-
- private static Matcher<Map.Entry<String, LlvmOperand>> isLocal(String name, Matcher<LlvmOperand> operand) {
- return allOf(
- has("name", x -> x.getKey(), equalTo(name)),
- has("operand", x -> x.getValue(), operand)
- );
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalStoreTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalStoreTests.java
deleted file mode 100644
index 814e7238..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenLocalStoreTests.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmOperand;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.zwobble.precisely.Matcher;
-
-import java.util.Map;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmOperandInt;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.*;
-
-public class LlvmCodeGenLocalStoreTests {
- @Test
- public void localStorePopsFromStackAndUpdatesLocals() {
- var instruction = Instructions.localStore("x");
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.operandInt(0))
- .push(LlvmIr.operandInt(1));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(0)));
- assertThat(result.shedLocalNameToOperand().entrySet(), isSequence(isLocal("x", isLlvmOperandInt(1))));
- }
-
- private static Matcher<Map.Entry<String, LlvmOperand>> isLocal(String name, Matcher<LlvmOperand> operand) {
- return allOf(
- has("name", x -> x.getKey(), equalTo(name)),
- has("operand", x -> x.getValue(), operand)
- );
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceFieldStoreTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceFieldStoreTests.java
deleted file mode 100644
index 191361e7..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceFieldStoreTests.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmGetElementPtr;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmStore;
-import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.typechecker.TypeCheckerContext;
-import org.shedlang.compiler.types.NamespaceName;
-import org.shedlang.compiler.types.Types;
-import org.shedlang.compiler.util.P;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.*;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.*;
-
-public class LlvmCodeGenNamespaceFieldStoreTests {
- @Test
- public void namespaceFieldStorePopsFromStackAndUpdatesFieldOnNamespace() {
- var namespaceName = new NamespaceName(List.of("Example", "Project"));
- var instruction = Instructions.namespaceFieldStore(namespaceName, "y");
- var typeInfo = TypeCheckerContext.EMPTY
- .addNamespaceFields(namespaceName, P.orderedMap(
- Map.entry("x", Types.INT),
- Map.entry("y", Types.INT),
- Map.entry("z", Types.INT)
- ))
- .toTypeInfo();
- var context = LlvmCodeGenContext.fromTypeInfo(typeInfo)
- .push(LlvmIr.operandInt(0))
- .push(LlvmIr.operandInt(1));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence(
- instanceOf(
- LlvmGetElementPtr.class,
- has("target", x -> x.target(), isLlvmVariableLocal("fieldPointer__y__0")),
- has(
- "pointerType",
- x -> x.pointerType(),
- equalTo(LlvmTypes.pointer(LlvmTypes.structure(List.of(
- LlvmTypes.INT_64,
- LlvmTypes.INT_64,
- LlvmTypes.INT_64
- ))))
- ),
- has(
- "pointer",
- x -> x.pointer(),
- isLlvmVariableGlobal("shed__namespace__Example_Project")
- ),
- has("indexes", x -> x.indexes(), isSequence(
- isLlvmTypedOperand(LlvmTypes.INT_64, isLlvmOperandInt(0)),
- isLlvmTypedOperand(LlvmTypes.INT_32, isLlvmOperandInt(1))
- ))
- ),
- instanceOf(
- LlvmStore.class,
- has("type", x -> x.type(), equalTo(LlvmTypes.INT_64)),
- has("value", x -> x.value(), isLlvmOperandInt(1)),
- has("pointer", x -> x.pointer(), isLlvmVariableLocal("fieldPointer__y__0"))
- )
- ));
- assertThat(result.stack(), isSequence(isLlvmOperandInt(0)));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceImportTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceImportTests.java
deleted file mode 100644
index 9e43f449..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenNamespaceImportTests.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmFunctionDeclaration;
-import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmCall;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.types.NamespaceName;
-
-import java.util.List;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmVariableGlobal;
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmVariableLocal;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.*;
-
-public class LlvmCodeGenNamespaceImportTests {
- @Test
- public void namespaceImportCallsNamespaceImportFunction() {
- var namespaceName = new NamespaceName(List.of("Example", "Project"));
- var instruction = Instructions.namespaceImport(namespaceName);
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.topLevelEntities(), isSequence(
- instanceOf(
- LlvmFunctionDeclaration.class,
- has("name", x -> x.name(), equalTo("shed__namespaceImport__Example_Project")),
- has("returnType", x -> x.returnType(), equalTo(LlvmCodeGenTypes.VALUE_TYPE)),
- has("params", x -> x.params(), isSequence())
- )
- ));
- assertThat(result.instructions(), isSequence(
- instanceOf(
- LlvmCall.class,
- has("target", x -> x.target(), isOptionalOf(isLlvmVariableLocal("namespace__Example_Project__0"))),
- has("returnType", x -> x.returnType(), equalTo(LlvmCodeGenTypes.VALUE_TYPE)),
- has("functionPointer", x -> x.functionPointer(), isLlvmVariableGlobal("shed__namespaceImport__Example_Project")),
- has("args", x -> x.args(), isSequence())
- )
- ));
- assertThat(result.stack(), isSequence(isLlvmVariableLocal("namespace__Example_Project__0")));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushBoolTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushBoolTests.java
deleted file mode 100644
index cf6bb76a..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushBoolTests.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmOperandInt;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.isSequence;
-
-public class LlvmCodeGenPushBoolTests {
- @Test
- public void pushFalseIsCompiledToOperandInStack() {
- var instruction = Instructions.pushBool(false);
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(0)));
- }
-
- @Test
- public void pushTrueIsCompiledToOperandInStack() {
- var instruction = Instructions.pushBool(true);
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(1)));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushIntTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushIntTests.java
deleted file mode 100644
index cb4711d9..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushIntTests.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmOperandInt;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.isSequence;
-
-public class LlvmCodeGenPushIntTests {
- // TODO: handle larger ints
-
- @Test
- public void pushIntIsCompiledToOperandInStack() {
- var instruction = Instructions.pushInt(42);
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(42)));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushStringTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushStringTests.java
deleted file mode 100644
index 0504084e..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushStringTests.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-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 org.shedlang.compiler.stackir.instructions.Instructions;
-
-import java.util.List;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.*;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.*;
-
-public class LlvmCodeGenPushStringTests {
- @Test
- public void pushStringIsCompiledToTopLevelEntityAndReferenceToTopLevelEntity() {
- var instruction = Instructions.pushString("hello");
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(
- isLlvmOperandPtrToInt(
- isLlvmVariableGlobal("shed__string__0"),
- equalTo(LlvmTypes.INT_64)
- )
- ));
- assertThat(result.topLevelEntities(), isSequence(
- instanceOf(
- LlvmGlobalDefinition.class,
- has("name", x -> x.name(), equalTo("shed__string__0")),
- has("type", x -> x.type(), equalTo(LlvmTypes.structure(List.of(
- LlvmTypes.INT_64,
- LlvmTypes.array(5, LlvmTypes.INT_8)
- )))),
- 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),
- LlvmIr.operandArray(LlvmTypes.INT_8, List.of(
- LlvmIr.operandInt(104),
- LlvmIr.operandInt(101),
- LlvmIr.operandInt(108),
- LlvmIr.operandInt(108),
- 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/LlvmCodeGenPushUnitTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushUnitTests.java
deleted file mode 100644
index 2da03372..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenPushUnitTests.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.isLlvmOperandInt;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.isSequence;
-
-public class LlvmCodeGenPushUnitTests {
- @Test
- public void pushUnitIsCompiledToOperandInStack() {
- var instruction = Instructions.pushUnit();
- var context = LlvmCodeGenContext.EMPTY;
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(isLlvmOperandInt(0)));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenReturnTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenReturnTests.java
deleted file mode 100644
index 66afa268..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenReturnTests.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-
-import static org.shedlang.compiler.backends.llvm.ir.ast.LlvmIrMatchers.*;
-import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.equalTo;
-import static org.zwobble.precisely.Matchers.isSequence;
-
-public class LlvmCodeGenReturnTests {
- @Test
- public void returnCompilesToReturnInstruction() {
- var instruction = Instructions.return_();
- var add = LlvmIr.add(
- LlvmIr.variableLocal("x"),
- LlvmTypes.INT_64,
- LlvmIr.variableLocal("left"),
- LlvmIr.variableLocal("right")
- );
- var context = LlvmCodeGenContext.EMPTY
- .addInstruction(add)
- .push(LlvmIr.variableLocal("a"))
- .push(LlvmIr.variableLocal("b"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- assertThat(result.basicBlocks(), isSequence(
- isLlvmBasicBlock(
- isSequence(
- equalTo(add)
- ),
- isLlvmReturn(LlvmCodeGenTypes.VALUE_TYPE, isLlvmVariableLocal("b"))
- )
- ));
- assertThat(result.instructions(), isSequence());
- assertThat(result.stack(), isSequence(
- isLlvmVariableLocal("a")
- ));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenStringAddTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenStringAddTests.java
deleted file mode 100644
index 29fa4370..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenStringAddTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
-import org.shedlang.compiler.stackir.instructions.Instructions;
-import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
-import org.shedlang.compiler.testing.snapshots.Snapshotter;
-
-import java.io.IOException;
-
-import static org.shedlang.compiler.backends.llvm.LlvmCodeGenTesting.serializeContext;
-
-@ExtendWith({SnapshotResolver.class})
-public class LlvmCodeGenStringAddTests {
- @Test
- public void stringAddIsCompiledToCallToRuntimeStringAdd(Snapshotter snapshotter) throws IOException {
- var instruction = Instructions.stringAdd();
- var context = LlvmCodeGenContext.EMPTY
- .push(LlvmIr.variableLocal("a"))
- .push(LlvmIr.variableLocal("b"))
- .push(LlvmIr.variableLocal("c"));
-
- var result = LlvmCodeGen.generateInstruction(instruction, context);
-
- snapshotter.assertSnapshot(serializeContext(result));
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java
deleted file mode 100644
index 97c3b0e6..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializer;
-
-import java.io.IOException;
-
-public class LlvmCodeGenTesting {
- private LlvmCodeGenTesting() {
- }
-
- public static String serializeContext(LlvmCodeGenContext context) throws IOException {
- var builder = new StringBuilder();
-
- builder.append("Stack:\n");
- for (var operand : context.stack()) {
- builder.append(" * ");
- LlvmIrSerializer.serializeOperand(operand, builder);
- builder.append("\n");
- }
- builder.append("\n");
-
- builder.append("Instructions:\n\n");
- for (var instruction : context.instructions()) {
- LlvmIrSerializer.serializeInstruction(instruction, builder);
- builder.append("\n");
- }
- builder.append("\n");
-
- builder.append("Basic blocks:\n\n");
- for (var basicBlock : context.basicBlocks()) {
- LlvmIrSerializer.serializeBasicBlock(basicBlock, builder);
- builder.append("\n");
- }
- builder.append("\n");
-
- builder.append("Top-level entities:\n\n");
-
- for (var topLevelEntity : context.topLevelEntities()) {
- LlvmIrSerializer.serializeTopLevelEntity(topLevelEntity, builder);
- builder.append("\n");
- }
-
- builder.append("Shed locals:\n");
- for (var entry : context.shedLocalNameToOperand().entrySet()) {
- var shedLocalName = entry.getKey();
- var operand = entry.getValue();
-
- builder.append(" * ");
- builder.append(shedLocalName);
- builder.append(" => ");
- LlvmIrSerializer.serializeOperand(operand, builder);
- builder.append("\n");
- }
- builder.append("\n");
-
- return builder.toString();
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java
deleted file mode 100644
index de28a11e..00000000
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmExampleTests.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.shedlang.compiler.backends.llvm;
-
-import org.shedlang.compiler.backends.Backend;
-import org.shedlang.compiler.backends.ExampleTests;
-
-import java.util.Optional;
-
-public class LlvmExampleTests extends ExampleTests {
- @Override
- protected Backend backend() {
- return LlvmBackend.DIRECT;
- }
-
- @Override
- protected Optional<String> binaryRunner() {
- return Optional.empty();
- }
-
- @Override
- protected String executableName(String binary) {
- return binary;
- }
-
- @Override
- protected boolean isDisabled(String testName) {
- return testName.equals("var") || testName.equals("while");
- }
-}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmPatioExampleTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmPatioExampleTests.java
index b43a7846..bc19ffbf 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmPatioExampleTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmPatioExampleTests.java
@@ -8,7 +8,7 @@ import java.util.Optional;
public class LlvmPatioExampleTests extends ExampleTests {
@Override
protected Backend backend() {
- return LlvmBackend.PATIO;
+ return LlvmBackend.INSTANCE;
}
@Override