diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-19 16:33:56 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-19 16:33:56 +0000 |
| commit | 89b5f09504528f6e7ee94c76df7cd0a91a9adfca (patch) | |
| tree | ecc93f71d1e53deb67e47431367bce810e9a82ec /src/main/java | |
| parent | eebb509694b6f074ba930dde4eb692307507b4fc (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.java | 14 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 1 |
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() ); |
