aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-20 23:31:04 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-20 23:31:04 +0100
commitfceeffe7558fc4cbab8d2d5062ad6cf2930ce850 (patch)
tree4ecdb55f5dd33c89d15cc6b51b6bd3fcdc76bc3f /src/test/java
parent413ad79ca75bb508ac2b6b333571f08f3d21c8a8 (diff)
Introduce operands to Patio
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenCallTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenDiscardTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenIntAddTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalStoreTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenReturnTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java55
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioTesting.java8
-rw-r--r--src/test/java/org/shedlang/compiler/patio/instructions/Patio.java5
8 files changed, 55 insertions, 23 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenCallTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenCallTests.java
index fc191166..a802351e 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenCallTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenCallTests.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.patio.ast.PatioLocalRef;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
import org.shedlang.compiler.stackir.instructions.Instructions;
import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDiscardTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDiscardTests.java
index 75aec63c..da7e55de 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDiscardTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDiscardTests.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.patio.ast.PatioLocalRef;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
import org.shedlang.compiler.stackir.instructions.Instructions;
import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenIntAddTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenIntAddTests.java
index 11de42eb..5969a9cf 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenIntAddTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenIntAddTests.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.patio.ast.PatioLocalRef;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
import org.shedlang.compiler.stackir.instructions.Instructions;
import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalStoreTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalStoreTests.java
index 186d81cb..1fc4f386 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalStoreTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalStoreTests.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.patio.ast.PatioLocalRef;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
import org.shedlang.compiler.stackir.instructions.Instructions;
import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenReturnTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenReturnTests.java
index afe90a4c..760f23e8 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenReturnTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenReturnTests.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.shedlang.compiler.patio.ast.PatioLocalRef;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
import org.shedlang.compiler.stackir.instructions.Instructions;
import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
index fbc770f7..e7c21285 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
@@ -76,7 +76,7 @@ public class PatioSerializerTests {
locals=(("local1" function-ptr) ("local2" int))
return-type=void
body=(
- (int-get "local2" 2)
+ (int-get (local "local2") 2)
)
)"""
));
@@ -93,7 +93,7 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(alloc \"x\" (struct (int int data-ptr)))"));
+ assertThat(string, equalTo("(alloc (local \"x\") (struct (int int data-ptr)))"));
}
@Test
@@ -106,7 +106,9 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(call-pointer \"target\" \"f\" (\"a\" \"b\" \"c\"))"));
+ assertThat(string, equalTo("""
+ (call-pointer (local "target") (local "f") ((local "a") (local "b") (local "c")))"""
+ ));
}
@Test
@@ -115,7 +117,7 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(data-ptr-get \"target\" \"x\")"));
+ assertThat(string, equalTo("(data-ptr-get (local \"target\") \"x\")"));
}
@Test
@@ -124,7 +126,9 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(data-ptr-to-int \"target\" \"value\")"));
+ assertThat(string, equalTo("""
+ (data-ptr-to-int (local "target") (local "value"))"""
+ ));
}
@Test
@@ -133,7 +137,9 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(function-pointer-get \"target\" \"f\")"));
+ assertThat(string, equalTo("""
+ (function-pointer-get (local "target") "f")"""
+ ));
}
@Test
@@ -153,12 +159,12 @@ public class PatioSerializerTests {
assertThat(string, equalTo("""
(
if
- "condition"
+ (local "condition")
(
- (int-get "x" 1)
+ (int-get (local "x") 1)
)
(
- (int-get "y" 2)
+ (int-get (local "y") 2)
)
)"""));
}
@@ -169,7 +175,9 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(int-add \"target\" \"left\" \"right\")"));
+ assertThat(string, equalTo("""
+ (int-add (local "target") (local "left") (local "right"))"""
+ ));
}
@Test
@@ -178,7 +186,7 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(int-get \"target\" 42)"));
+ assertThat(string, equalTo("(int-get (local \"target\") 42)"));
}
@Test
@@ -187,7 +195,7 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(int-to-data-ptr \"target\" \"value\")"));
+ assertThat(string, equalTo("(int-to-data-ptr (local \"target\") (local \"value\"))"));
}
@Test
@@ -196,7 +204,7 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(local-copy \"target\" \"x\")"));
+ assertThat(string, equalTo("(local-copy (local \"target\") (local \"x\"))"));
}
@Test
@@ -213,8 +221,8 @@ public class PatioSerializerTests {
assertThat(string, equalTo("""
(
memory-load
- "target"
- pointer="pointer"
+ (local "target")
+ pointer=(local "pointer")
layout=(struct (int int data-ptr))
offset=(1)
)"""
@@ -235,10 +243,10 @@ public class PatioSerializerTests {
assertThat(string, equalTo("""
(
memory-store
- pointer="pointer"
+ pointer=(local "pointer")
layout=(struct (int int data-ptr))
offset=(1)
- value="value"
+ value=(local "value")
)"""
));
}
@@ -249,7 +257,18 @@ public class PatioSerializerTests {
var string = PatioTesting.serializeInstruction(instruction);
- assertThat(string, equalTo("(return \"value\")"));
+ assertThat(string, equalTo("(return (local \"value\"))"));
+ }
+
+ // == Operands ==
+
+ @Test
+ public void canSerializeLocalRef() {
+ var operand = Patio.localRef("x");
+
+ var string = PatioTesting.serializeOperand(operand);
+
+ assertThat(string, equalTo("(local \"x\")"));
}
// == Types ==
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioTesting.java b/src/test/java/org/shedlang/compiler/patio/PatioTesting.java
index 53e13d13..d90f9534 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioTesting.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioTesting.java
@@ -4,6 +4,8 @@ import org.shedlang.compiler.patio.ast.PatioCompilationUnit;
import org.shedlang.compiler.patio.ast.PatioCompilationUnitElement;
import org.shedlang.compiler.patio.ast.PatioSerializer;
import org.shedlang.compiler.patio.ast.instructions.PatioInstruction;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
+import org.shedlang.compiler.patio.ast.operands.PatioOperand;
import org.shedlang.compiler.patio.ast.types.PatioDataLayout;
import org.shedlang.compiler.patio.ast.types.PatioType;
@@ -76,6 +78,12 @@ class PatioTesting {
return builder.toString();
}
+ static String serializeOperand(PatioOperand operand) {
+ var builder = new StringBuilder();
+ PatioSerializer.serializeOperand(operand, builder);
+ return builder.toString();
+ }
+
static String serializeType(PatioType type) {
var builder = new StringBuilder();
PatioSerializer.serializeType(type, builder);
diff --git a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
index 79b2f6ed..50aa38ab 100644
--- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
+++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.patio.instructions;
import org.shedlang.compiler.patio.ast.*;
import org.shedlang.compiler.patio.ast.instructions.*;
+import org.shedlang.compiler.patio.ast.operands.PatioLocalRef;
import org.shedlang.compiler.patio.ast.types.PatioDataLayout;
import org.shedlang.compiler.patio.ast.types.PatioType;
import org.shedlang.compiler.sources.Sources;
@@ -106,6 +107,10 @@ public class Patio {
);
}
+ public static PatioLocalRef localRef(String name) {
+ return new PatioLocalRef(name);
+ }
+
public static PatioInstruction memoryLoad(
String target,
String pointer,