aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-19 16:33:56 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-19 16:33:56 +0000
commit89b5f09504528f6e7ee94c76df7cd0a91a9adfca (patch)
treeecc93f71d1e53deb67e47431367bce810e9a82ec /src/main/java
parenteebb509694b6f074ba930dde4eb692307507b4fc (diff)
Add methods to typed struct definition node
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedStructDefinitionNode.java14
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java1
2 files changed, 11 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedStructDefinitionNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedStructDefinitionNode.java
index 82379f7c..5d36e05a 100644
--- a/src/main/java/org/shedlang/compiler/ast/typed/TypedStructDefinitionNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedStructDefinitionNode.java
@@ -15,6 +15,7 @@ public record TypedStructDefinitionNode(
TypeOrConstructor<SimpleStructType> typeOrConstructor,
List<TypedStructFieldDefinitionNode> fields,
boolean fieldsArePositional,
+ List<TypedFunctionDefinitionNode> methods,
Source source
) implements TypedNamespaceStatementNode {
public static Builder builder() {
@@ -22,20 +23,23 @@ public record TypedStructDefinitionNode(
return new Builder(
TypeOrConstructor.type(Types.struct(namespaceName, "X")),
P.vector(),
- false
+ false,
+ P.vector()
);
}
public record Builder(
TypeOrConstructor<SimpleStructType> type,
PVector<TypedStructFieldDefinitionNode> fields,
- boolean fieldsArePositional
+ boolean fieldsArePositional,
+ PVector<TypedFunctionDefinitionNode> methods
) {
public TypedStructDefinitionNode build() {
return new TypedStructDefinitionNode(
this.type,
this.fields,
this.fieldsArePositional,
+ this.methods,
Sources.NULL
);
}
@@ -44,7 +48,8 @@ public record TypedStructDefinitionNode(
return new Builder(
TypeOrConstructor.type(type),
this.fields,
- fieldsArePositional
+ fieldsArePositional,
+ this.methods
);
}
@@ -52,7 +57,8 @@ public record TypedStructDefinitionNode(
return new Builder(
this.type,
this.fields.plus(field),
- fieldsArePositional
+ this.fieldsArePositional,
+ this.methods
);
}
}
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index 8cec1f85..1d3a9535 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -1689,6 +1689,7 @@ public class TypeChecker {
typeOrConstructor,
typedFieldNodes,
untyped.fieldsArePositional(),
+ List.of(),
untyped.source()
);