aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-11 00:49:43 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-11 00:50:50 +0000
commit082e7a06ed147d3bce1116d48b0911119b43af71 (patch)
treea5d484c552241391e8d48a81d77a803a531b5ca1 /src/main/java
parent1b56846cfdf7e25408920bdeb4f46edb721a218f (diff)
Compile Patio code for positional structs
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java
index edf1707e..0b88da20 100644
--- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java
+++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java
@@ -83,13 +83,17 @@ public class ShidToPatioStructs {
Source source,
ShidToPatioContext context
) {
+ var structTypeInfo = context.structTypeInfo(type);
+
+ var params = fields.stream()
+ .map(field -> new ShidDefineFunction.Param(field.name(), field.source()))
+ .toList();
+
return ShidToPatioFunctions.create(
destination,
type.name(),
- List.of(),
- fields.stream()
- .map(field -> new ShidDefineFunction.Param(field.name(), field.source()))
- .toList(),
+ structTypeInfo.fieldsArePositional() ? params : List.of(),
+ structTypeInfo.fieldsArePositional() ? List.of() : params,
FreeVariables.empty(),
bodyContext -> {
var valuePointerResult = bodyContext.allocateVal(