aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/parser
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-23 11:50:33 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-23 11:50:33 +0000
commita7c33eef7d2598d5636ff5bcde07da4f9c057184 (patch)
tree43fd9d2e37c9a4b2e8ebc45ab0ba998aca2b62b1 /src/main/java/org/shedlang/compiler/parser
parent924ae7e0ebfd2abaf320a2ad4f3441e5034ffb91 (diff)
Parse type level params for sum types
Diffstat (limited to 'src/main/java/org/shedlang/compiler/parser')
-rw-r--r--src/main/java/org/shedlang/compiler/parser/Parser.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java
index 9fb8a93b..753a6d75 100644
--- a/src/main/java/org/shedlang/compiler/parser/Parser.java
+++ b/src/main/java/org/shedlang/compiler/parser/Parser.java
@@ -968,6 +968,8 @@ public class Parser {
var name = tokens.nextValue(TokenType.IDENTIFIER);
+ var typeLevelParams = parseTypeLevelParamsOptional(tokens);
+
tokens.skip(TokenType.SYMBOL_EQUALS);
var variants = parseOneOrMoreNoTrailingSeparator(
@@ -980,7 +982,13 @@ public class Parser {
var end = tokens.position();
var source = start.to(end);
- return new UntypedSumTypeDefinitionNode(name, visibility, variants, source);
+ return new UntypedSumTypeDefinitionNode(
+ name,
+ visibility,
+ typeLevelParams,
+ variants,
+ source
+ );
}
static UntypedExpressionNode parseTopLevelExpression(TokenIterator<TokenType> tokens) {