From 01193de5040c7200de359ed0775b9ec5c7537ca2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 31 Oct 2023 18:51:21 +0000 Subject: Parse effect visibility --- .../parser/ParserEffectDefinitionTests.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/test/java/org/shedlang/compiler/parser') diff --git a/src/test/java/org/shedlang/compiler/parser/ParserEffectDefinitionTests.java b/src/test/java/org/shedlang/compiler/parser/ParserEffectDefinitionTests.java index e697c542..6fc623ca 100644 --- a/src/test/java/org/shedlang/compiler/parser/ParserEffectDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/parser/ParserEffectDefinitionTests.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.parser; import org.junit.jupiter.api.Test; +import org.shedlang.compiler.types.Visibility; import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.isUntypedEffectDefinitionNode; import static org.shedlang.compiler.parser.ParserTesting.parseString; @@ -21,4 +22,32 @@ public class ParserEffectDefinitionTests { .withName("State") ); } + + @Test + public void defaultVisibilityIsPrivate() { + var source = """ + effect State { + }"""; + + var node = parseString(source, Parser::parseNamespaceStatement); + + assertThat( + node, + isUntypedEffectDefinitionNode().withVisibility(Visibility.PRIVATE) + ); + } + + @Test + public void whenEffectIsPrefixedWithPubThenVisibilityIsPublic() { + var source = """ + pub effect State { + }"""; + + var node = parseString(source, Parser::parseNamespaceStatement); + + assertThat( + node, + isUntypedEffectDefinitionNode().withVisibility(Visibility.PUBLIC) + ); + } } -- cgit v1.2.3