aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-01-12 22:00:07 +0000
committerMichael Williamson <mike@zwobble.org>2025-01-12 22:00:14 +0000
commita3aadd9903e64a7a459227e28feeee03d05560b3 (patch)
tree9a165fe3e590660dbb8cd24853d25084b3aa757c /src/main/java
parent2d8959f02570b18d318ab5e75d4f90128ea4fcd0 (diff)
Lift Shid param to top-level
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java12
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java15
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidParam.java6
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioClosures.java10
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioEffects.java10
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioFunctions.java6
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java6
7 files changed, 34 insertions, 31 deletions
diff --git a/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java b/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java
index 194d4708..2c371d4b 100644
--- a/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java
@@ -199,14 +199,14 @@ public class ShidCodeGen {
var c = context;
var positionalParams = params.positional().stream()
- .map(param -> new ShidDefineFunction.Param(
+ .map(param -> new ShidParam(
c.shedVariableToLocal(param.name()),
param.source()
))
.toList();
var namedParams = params.named().stream()
- .map(param -> new ShidDefineFunction.Param(
+ .map(param -> new ShidParam(
c.shedVariableToLocal(param.name()),
param.source()
))
@@ -446,19 +446,19 @@ public class ShidCodeGen {
new ShidLocalLoad(receiverLocalName, node.source())
);
- var shidPositionalParams = new ArrayList<ShidDefineFunction.Param>();
+ var shidPositionalParams = new ArrayList<ShidParam>();
for (var positionalParamName : shedPositionalParamNames) {
var shidParamName = context.shedVariableToLocal(positionalParamName);
- shidPositionalParams.add(new ShidDefineFunction.Param(shidParamName, node.source()));
+ shidPositionalParams.add(new ShidParam(shidParamName, node.source()));
context = context.addInstruction(
new ShidLocalLoad(shidParamName, node.source())
);
}
- var shidNamedParams = new ArrayList<ShidDefineFunction.Param>();
+ var shidNamedParams = new ArrayList<ShidParam>();
for (var namedParam : methodType.namedParams()) {
var shidParamName = context.shedVariableToLocal(namedParam.name());
- shidNamedParams.add(new ShidDefineFunction.Param(shidParamName, node.source()));
+ shidNamedParams.add(new ShidParam(shidParamName, node.source()));
context = context.addInstruction(
new ShidLocalLoad(shidParamName, node.source())
);
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java
index 46b6c81e..3843b0bc 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java
@@ -14,16 +14,13 @@ import java.util.List;
*/
public record ShidDefineFunction(
String name,
- List<Param> positionalParams,
- List<Param> namedParams,
+ List<ShidParam> positionalParams,
+ List<ShidParam> namedParams,
FreeVariables freeVariables,
ShidBlock body,
Variant variant,
Source source
) implements ShidInstruction {
- public record Param(String name, Source source) {
-
- }
public enum Variant {
EFFECT_HANDLER_METHOD,
@@ -48,8 +45,8 @@ public record ShidDefineFunction(
public record Builder(
String name,
- PVector<Param> positionalParams,
- PVector<Param> namedParams,
+ PVector<ShidParam> positionalParams,
+ PVector<ShidParam> namedParams,
FreeVariables.Builder freeVariables,
PVector<ShidInstruction> body,
ShidDefineFunction.Variant variant
@@ -80,7 +77,7 @@ public record ShidDefineFunction(
public Builder addPositionalParam(String name) {
return new Builder(
this.name,
- this.positionalParams.plus(new Param(name, Sources.NULL)),
+ this.positionalParams.plus(new ShidParam(name, Sources.NULL)),
this.namedParams,
this.freeVariables,
this.body,
@@ -92,7 +89,7 @@ public record ShidDefineFunction(
return new Builder(
this.name,
this.positionalParams,
- this.namedParams.plus(new Param(name, Sources.NULL)),
+ this.namedParams.plus(new ShidParam(name, Sources.NULL)),
this.freeVariables,
this.body,
this.variant
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidParam.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidParam.java
new file mode 100644
index 00000000..7465406e
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidParam.java
@@ -0,0 +1,6 @@
+package org.shedlang.compiler.shid.instructions;
+
+import org.shedlang.compiler.sources.Source;
+
+public record ShidParam(String name, Source source) {
+}
diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioClosures.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioClosures.java
index 4a96a2bf..624a2787 100644
--- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioClosures.java
+++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioClosures.java
@@ -11,7 +11,7 @@ import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.types.PatioDataLayouts;
import org.shedlang.compiler.patio.types.PatioType;
import org.shedlang.compiler.patio.types.PatioTypes;
-import org.shedlang.compiler.shid.instructions.ShidDefineFunction;
+import org.shedlang.compiler.shid.instructions.ShidParam;
import org.shedlang.compiler.sources.Source;
import org.shedlang.compiler.util.P;
@@ -95,8 +95,8 @@ class ShidToPatioClosures {
}
static ShidToPatioContext defineParams(
- List<ShidDefineFunction.Param> positionalParams,
- List<ShidDefineFunction.Param> namedParams,
+ List<ShidParam> positionalParams,
+ List<ShidParam> namedParams,
ShidToPatioContext bodyContext
) {
var orderedNamedParams = sortedBy(namedParams, param -> param.name());
@@ -113,8 +113,8 @@ class ShidToPatioClosures {
PatioLocalRef destination,
ShidToPatioCompilationUnitElementSpace functionElementSpace,
String name,
- List<ShidDefineFunction.Param> positionalParams,
- List<ShidDefineFunction.Param> namedParams,
+ List<ShidParam> positionalParams,
+ List<ShidParam> namedParams,
ClosureRuntimeType closureRuntimeType,
BiFunction<PatioLocalRef, ShidToPatioContext, ShidToPatioContext> storeAdditional,
FreeVariables freeVariables,
diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioEffects.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioEffects.java
index 648e62f1..6d2ba0e3 100644
--- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioEffects.java
+++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioEffects.java
@@ -12,7 +12,7 @@ import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.types.PatioDataLayouts;
import org.shedlang.compiler.patio.types.PatioType;
import org.shedlang.compiler.patio.types.PatioTypes;
-import org.shedlang.compiler.shid.instructions.ShidDefineFunction;
+import org.shedlang.compiler.shid.instructions.ShidParam;
import org.shedlang.compiler.sources.Source;
import org.shedlang.compiler.sources.Sources;
import org.shedlang.compiler.types.UserDefinedEffect;
@@ -209,7 +209,7 @@ public class ShidToPatioEffects {
var positionalParams = IntStream.range(0, method.type().positionalParams().size())
// TODO: ensure names of positional params doesn't clash with named params
- .mapToObj(paramIndex -> new ShidDefineFunction.Param("arg" + paramIndex, source))
+ .mapToObj(paramIndex -> new ShidParam("arg" + paramIndex, source))
.toList();
context = ShidToPatioFunctions.create(
@@ -217,7 +217,7 @@ public class ShidToPatioEffects {
method.name(),
positionalParams,
method.type().namedParams().stream()
- .map(namedParam -> new ShidDefineFunction.Param(namedParam.name(), source))
+ .map(namedParam -> new ShidParam(namedParam.name(), source))
.toList(),
FreeVariables.empty(),
bodyContext -> {
@@ -423,8 +423,8 @@ public class ShidToPatioEffects {
public static ShidToPatioContext createEffectHandlerMethod(
PatioLocalRef destination,
String name,
- List<ShidDefineFunction.Param> positionalParams,
- List<ShidDefineFunction.Param> namedParams,
+ List<ShidParam> positionalParams,
+ List<ShidParam> namedParams,
FreeVariables freeVariables,
Function<ShidToPatioContext, ShidToPatioContext> generateBody,
Source source,
diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioFunctions.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioFunctions.java
index 01527ae5..c4edd762 100644
--- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioFunctions.java
+++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioFunctions.java
@@ -4,7 +4,7 @@ import org.shedlang.compiler.ast.typed.FreeVariables;
import org.shedlang.compiler.patio.operands.PatioLocalRef;
import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.types.PatioDataLayouts;
-import org.shedlang.compiler.shid.instructions.ShidDefineFunction;
+import org.shedlang.compiler.shid.instructions.ShidParam;
import org.shedlang.compiler.sources.Source;
import java.util.List;
@@ -30,8 +30,8 @@ public class ShidToPatioFunctions {
public static ShidToPatioContext create(
PatioLocalRef destination,
String name,
- List<ShidDefineFunction.Param> positionalParams,
- List<ShidDefineFunction.Param> namedParams,
+ List<ShidParam> positionalParams,
+ List<ShidParam> namedParams,
FreeVariables freeVariables,
Function<ShidToPatioContext, ShidToPatioContext> generateBody,
Source source,
diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java
index 0b88da20..4996b89b 100644
--- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java
+++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java
@@ -8,9 +8,9 @@ import org.shedlang.compiler.patio.operands.PatioOperand;
import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.types.PatioDataLayouts;
import org.shedlang.compiler.patio.types.PatioTypes;
-import org.shedlang.compiler.sources.Source;
-import org.shedlang.compiler.shid.instructions.ShidDefineFunction;
import org.shedlang.compiler.shid.instructions.ShidDefineStruct;
+import org.shedlang.compiler.shid.instructions.ShidParam;
+import org.shedlang.compiler.sources.Source;
import org.shedlang.compiler.types.SimpleStructType;
import org.shedlang.compiler.types.StructTypeInfo;
import org.shedlang.compiler.util.Lists;
@@ -86,7 +86,7 @@ public class ShidToPatioStructs {
var structTypeInfo = context.structTypeInfo(type);
var params = fields.stream()
- .map(field -> new ShidDefineFunction.Param(field.name(), field.source()))
+ .map(field -> new ShidParam(field.name(), field.source()))
.toList();
return ShidToPatioFunctions.create(