aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-10 23:40:54 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-10 23:40:54 +0000
commiteed6af3b589f6c6eee94585447028e492653d499 (patch)
tree1900c627ddd801014b0c10cda1269673120d613a /src/main/java
parent4c0a26032280424c48ba364ea1f738b164cb064c (diff)
Preserve positionality of struct fields when typing struct
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedStructFieldDefinitionNode.java1
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedStructFieldDefinitionNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedStructFieldDefinitionNode.java
index a84517a0..6dc492d2 100644
--- a/src/main/java/org/shedlang/compiler/ast/typed/TypedStructFieldDefinitionNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedStructFieldDefinitionNode.java
@@ -6,6 +6,7 @@ import org.shedlang.compiler.types.Type;
public record TypedStructFieldDefinitionNode(
String name,
TypedTypeLevelExpressionNode<Type> type,
+ boolean isPositional,
Source source
) implements TypedNode {
}
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index 2cb726d4..08ce187b 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -1661,6 +1661,7 @@ public class TypeChecker {
var typedFieldNode = new TypedStructFieldDefinitionNode(
untypedField.name(),
typeCheckTypeExpression(untypedField.type(), context),
+ untypedField.isPositional(),
untypedField.source()
);
typedFieldNodes.add(typedFieldNode);