diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-30 13:31:25 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-30 13:33:23 +0100 |
| commit | 3b71fb59ab9613d73733d6c82cac8ddd74bb5101 (patch) | |
| tree | 2364b1daea2f7b609ea3cddb8da91dcfe39c41fd /src/test/java | |
| parent | 209cafc729a344efa002c545cae1f944061709d3 (diff) | |
Store params and vals as locals in Patio
Diffstat (limited to 'src/test/java')
6 files changed, 26 insertions, 32 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDefineFunctionTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDefineFunctionTests.java index 97a78a1f..6d3ebad9 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDefineFunctionTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenDefineFunctionTests.java @@ -50,8 +50,8 @@ public class PatioCodeGenDefineFunctionTests { Sources.NULL ); var context = PatioCodeGenContext.EMPTY - .addStackIrArg("a") - .addStackIrArg("b"); + .addStackIrParam("a") + .addStackIrParam("b"); var result = PatioCodeGen.generateInstruction(instruction, context); @@ -74,8 +74,8 @@ public class PatioCodeGenDefineFunctionTests { var context = PatioCodeGenContext.EMPTY; context = PatioCodeGen.generateInstruction(instruction, context); - context = context.addStackIrArg("a"); - context = context.addStackIrArg("b"); + context = context.addStackIrParam("a"); + context = context.addStackIrParam("b"); snapshotter.assertSnapshot(serialize(context)); } @@ -98,8 +98,8 @@ public class PatioCodeGenDefineFunctionTests { Sources.NULL ); var context = PatioCodeGenContext.EMPTY - .addStackIrArg("a") - .addStackIrArg("b"); + .addStackIrParam("a") + .addStackIrParam("b"); var result = PatioCodeGen.generateInstruction(instruction, context); diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalLoadTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalLoadTests.java index 67412723..1a6302a2 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalLoadTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenLocalLoadTests.java @@ -16,7 +16,7 @@ public class PatioCodeGenLocalLoadTests { public void localLoadPushesLocalOntoStack(Snapshotter snapshotter) throws IOException { var stackIr = Instructions.localLoad("x"); var context = PatioCodeGenContext.EMPTY - .addStackIrArg("x"); + .addStackIrParam("x"); var result = PatioCodeGen.generateInstruction(stackIr, context); diff --git a/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java b/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java index d0fffc12..c4a40645 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java @@ -21,9 +21,9 @@ public abstract class PatioExampleTests { var patioFunction = PatioFunctionDefinition.builder() .withName(FUNCTION_NAME) .withReturnType(PatioTypes.INT) - .addLocal(Patio.local("x", PatioTypes.INT)) - .addLocal(Patio.local("y", PatioTypes.INT)) - .addLocal(Patio.local("z", PatioTypes.INT)) + .addLocal(Patio.val("x", PatioTypes.INT)) + .addLocal(Patio.val("y", PatioTypes.INT)) + .addLocal(Patio.val("z", PatioTypes.INT)) .addBodyInstruction(Patio.localStore( Patio.localRef("x"), Patio.int_(42) diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java index 7034196e..92a23504 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java @@ -34,7 +34,6 @@ public class PatioSerializerTests { function "f" visibility=private - params=() locals=() return-type=void body=( @@ -78,8 +77,8 @@ public class PatioSerializerTests { public void canSerializeFunctionDeclaration() { var element = PatioFunctionDeclaration.builder() .withName("f") - .addParam(Patio.local("param1", PatioTypes.INT)) - .addParam(Patio.local("param2", PatioTypes.DATA_POINTER)) + .addParam(Patio.param("param1", PatioTypes.INT)) + .addParam(Patio.param("param2", PatioTypes.DATA_POINTER)) .withReturnType(PatioTypes.VOID) .build(); @@ -89,7 +88,7 @@ public class PatioSerializerTests { ( function-decl "f" - params=(("param1" int) ("param2" data-ptr)) + params=((param "param1" int) (param "param2" data-ptr)) return-type=void )""" )); @@ -100,10 +99,10 @@ public class PatioSerializerTests { var element = PatioFunctionDefinition.builder() .withName("f") .withVisibility(PatioVisibility.PRIVATE) - .addParam(Patio.local("param1", PatioTypes.INT)) - .addParam(Patio.local("param2", PatioTypes.DATA_POINTER)) - .addLocal(Patio.local("local1", PatioTypes.FUNCTION_POINTER)) - .addLocal(Patio.local("local2", PatioTypes.INT)) + .addLocal(Patio.param("param1", PatioTypes.INT)) + .addLocal(Patio.param("param2", PatioTypes.DATA_POINTER)) + .addLocal(Patio.val("local1", PatioTypes.FUNCTION_POINTER)) + .addLocal(Patio.val("local2", PatioTypes.INT)) .withReturnType(PatioTypes.VOID) .addBodyInstruction(Patio.localStore(Patio.localRef("local2"), Patio.int_(2))) .build(); @@ -115,8 +114,7 @@ public class PatioSerializerTests { function "f" visibility=private - params=(("param1" int) ("param2" data-ptr)) - locals=(("local1" function-ptr) ("local2" int)) + locals=((param "param1" int) (param "param2" data-ptr) (val "local1" function-ptr) (val "local2" int)) return-type=void body=( (local-store (local "local2") (int 2)) diff --git a/src/test/java/org/shedlang/compiler/patio/PatioTesting.java b/src/test/java/org/shedlang/compiler/patio/PatioTesting.java index de20da69..50a32d87 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioTesting.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioTesting.java @@ -30,14 +30,6 @@ class PatioTesting { } builder.append("\n"); - builder.append("Args:\n"); - for (var arg : context.functionContext().args()) { - builder.append(" * "); - builder.append(arg.name()); - builder.append("\n"); - } - builder.append("\n"); - builder.append("Instructions:\n\n"); PatioSerializer.serializeInstructions( context.functionContext().instructions(), 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 9de86434..c1de1477 100644 --- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java +++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java @@ -167,10 +167,6 @@ public class Patio { ); } - public static PatioLocal local(String name, PatioType type) { - return new PatioLocal(name, type); - } - public static PatioInstruction localStore(PatioLocalRef target, PatioOperand value) { return new PatioLocalStore( target, @@ -213,7 +209,15 @@ public class Patio { ); } + public static PatioLocal.Param param(String name, PatioType type) { + return new PatioLocal.Param(name, type); + } + public static PatioInstruction return_(PatioOperand value) { return new PatioReturn(value, Sources.NULL); } + + public static PatioLocal.Val val(String name, PatioType type) { + return new PatioLocal.Val(name, type); + } } |
