aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
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(