diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-26 11:25:10 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-26 11:25:10 +0000 |
| commit | df6ec9c9606184b472fc3d7278e2a50fb32c1479 (patch) | |
| tree | bc98746c38bd166de4b6e0d90a14a58483899f65 /src/main/java | |
| parent | 5b1568636d4b6859d0c65f994cfcac32a337f31e (diff) | |
Parse absent type-level args
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/ast/untyped/UntypedCallNode.java | 17 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/parser/Parser.java | 8 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedCallNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedCallNode.java index c5b2c241..e9624263 100644 --- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedCallNode.java +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedCallNode.java @@ -3,8 +3,12 @@ package org.shedlang.compiler.ast.untyped; import org.shedlang.compiler.sources.Source; import org.shedlang.compiler.sources.Sources; +import java.util.List; +import java.util.Optional; + public record UntypedCallNode( UntypedExpressionNode receiver, + Optional<List<UntypedTypeLevelExpressionNode>> typeLevelArgs, UntypedArgsNode args, boolean hasEffects, Source source @@ -12,6 +16,7 @@ public record UntypedCallNode( public static Builder builder() { return new Builder( new UntypedReferenceNode("f", Sources.NULL), + Optional.empty(), UntypedArgsNode.builder(), false ); @@ -19,16 +24,24 @@ public record UntypedCallNode( public record Builder( UntypedExpressionNode receiver, + Optional<List<UntypedTypeLevelExpressionNode>> typeLevelArgs, UntypedArgsNode.Builder args, boolean hasEffects ) { public UntypedCallNode build() { - return new UntypedCallNode(receiver, args.build(), hasEffects, Sources.NULL); + return new UntypedCallNode( + receiver, + typeLevelArgs, + args.build(), + hasEffects, + Sources.NULL + ); } public Builder withReceiver(UntypedReferenceNode receiver) { return new Builder( receiver, + this.typeLevelArgs, this.args, this.hasEffects ); @@ -37,6 +50,7 @@ public record UntypedCallNode( public Builder addNamedArg(UntypedNamedArgNode arg) { return new Builder( this.receiver, + this.typeLevelArgs, this.args.addNamedArg(arg), this.hasEffects ); @@ -45,6 +59,7 @@ public record UntypedCallNode( public Builder withHasEffects(boolean hasEffects) { return new Builder( this.receiver, + this.typeLevelArgs, this.args, hasEffects ); diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java index 3c91c561..96b06c50 100644 --- a/src/main/java/org/shedlang/compiler/parser/Parser.java +++ b/src/main/java/org/shedlang/compiler/parser/Parser.java @@ -218,7 +218,13 @@ public class Parser { var end = tokens.position(); var source = start.to(end); - return new UntypedCallNode(left, args, hasEffects, source); + return new UntypedCallNode( + left, + Optional.empty(), + args, + hasEffects, + source + ); } } |
