From 89b5f09504528f6e7ee94c76df7cd0a91a9adfca Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 19 Dec 2024 16:33:56 +0000 Subject: Add methods to typed struct definition node --- .../compiler/ast/typed/TypedStructDefinitionNode.java | 14 ++++++++++---- .../org/shedlang/compiler/typechecker/TypeChecker.java | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/main/java') 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 typeOrConstructor, List fields, boolean fieldsArePositional, + List 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 type, PVector fields, - boolean fieldsArePositional + boolean fieldsArePositional, + PVector 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() ); -- cgit v1.2.3