diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-11 00:49:43 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-11 00:50:50 +0000 |
| commit | 082e7a06ed147d3bce1116d48b0911119b43af71 (patch) | |
| tree | a5d484c552241391e8d48a81d77a803a531b5ca1 /src/main/java | |
| parent | 1b56846cfdf7e25408920bdeb4f46edb721a218f (diff) | |
Compile Patio code for positional structs
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( |
