aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/parser
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-03-03 10:33:47 +0000
committerMichael Williamson <mike@zwobble.org>2024-03-03 10:33:47 +0000
commit716a7e63392e01dff99111e41c6233655e76e466 (patch)
treede0a4c868cf4bfc6fdabac98231504ee0e19d0c7 /src/main/java/org/shedlang/compiler/parser
parentf48ecd33ee4430abe7ebb85652554d37d8dea29b (diff)
Add type-level args node for more specific source
Diffstat (limited to 'src/main/java/org/shedlang/compiler/parser')
-rw-r--r--src/main/java/org/shedlang/compiler/parser/Parser.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java
index 45d3f1b1..caa94e87 100644
--- a/src/main/java/org/shedlang/compiler/parser/Parser.java
+++ b/src/main/java/org/shedlang/compiler/parser/Parser.java
@@ -1273,9 +1273,11 @@ public class Parser {
return new UntypedTupleTypeNode(elements, source);
}
- private static Optional<List<UntypedTypeLevelExpressionNode>> parseTypeLevelArgsOptional(
+ private static Optional<UntypedTypeLevelArgsNode> parseTypeLevelArgsOptional(
TokenIterator<TokenType> tokens
) {
+ var start = tokens.position();
+
if (tokens.trySkip(TokenType.SYMBOL_SQUARE_OPEN)) {
var params = parseMany(
() -> tokens.isNext(TokenType.SYMBOL_SQUARE_CLOSE),
@@ -1285,7 +1287,10 @@ public class Parser {
tokens.skip(TokenType.SYMBOL_SQUARE_CLOSE);
- return Optional.of(params);
+ var end = tokens.position();
+ var source = start.to(end);
+
+ return Optional.of(new UntypedTypeLevelArgsNode(params, source));
} else {
return Optional.empty();
}