diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-03-03 10:33:47 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-03-03 10:33:47 +0000 |
| commit | 716a7e63392e01dff99111e41c6233655e76e466 (patch) | |
| tree | de0a4c868cf4bfc6fdabac98231504ee0e19d0c7 /src/main/java/org/shedlang/compiler/parser | |
| parent | f48ecd33ee4430abe7ebb85652554d37d8dea29b (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.java | 9 |
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(); } |
