diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioStructs.java | 12 |
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( |
