aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-10-31 18:51:21 +0000
committerMichael Williamson <mike@zwobble.org>2023-10-31 18:51:21 +0000
commit01193de5040c7200de359ed0775b9ec5c7537ca2 (patch)
treed71f83de1d586b215c7ac899e8aa783ef7d088ce /src/main/java
parent375a1bfb7fbc08a55bde8866a3f67fc6e460c808 (diff)
Parse effect visibility
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedEffectDefinitionNode.java5
-rw-r--r--src/main/java/org/shedlang/compiler/parser/Parser.java7
2 files changed, 7 insertions, 5 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedEffectDefinitionNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedEffectDefinitionNode.java
index 66dab2a5..740c7fcb 100644
--- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedEffectDefinitionNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedEffectDefinitionNode.java
@@ -5,10 +5,7 @@ import org.shedlang.compiler.types.Visibility;
public record UntypedEffectDefinitionNode(
String name,
+ Visibility visibility,
Source source
) implements UntypedNamespaceStatementNode, UntypedVariableDeclarationNode {
- @Override
- public Visibility visibility() {
- return Visibility.PRIVATE;
- }
}
diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java
index 6be82270..3efdc40b 100644
--- a/src/main/java/org/shedlang/compiler/parser/Parser.java
+++ b/src/main/java/org/shedlang/compiler/parser/Parser.java
@@ -206,6 +206,8 @@ public class Parser {
) {
var start = tokens.position();
+ var visibility = parseVisibility(tokens);
+
tokens.skip(TokenType.KEYWORD_EFFECT);
var name = tokens.nextValue(TokenType.IDENTIFIER);
@@ -216,7 +218,7 @@ public class Parser {
var end = tokens.position();
var source = start.to(end);
- return new UntypedEffectDefinitionNode(name, source);
+ return new UntypedEffectDefinitionNode(name, visibility, source);
}
private static final Map<TokenType, OperationParser> OPERATION_PARSERS = Stream.of(
@@ -617,6 +619,9 @@ public class Parser {
case KEYWORD_PUB ->
switch (tokens.peek(1).tokenType()) {
+ case KEYWORD_EFFECT ->
+ parseEffectDefinition(tokens);
+
case KEYWORD_FUN ->
parseFunctionDefinition(tokens);