From c57ca9e4d30e07d2ff0ba2f113e905a3c3794c75 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 20 Oct 2023 17:51:33 +0100 Subject: Parse imports in namespace --- .../compiler/parser/ParserNamespaceTests.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/test/java/org/shedlang/compiler/parser') diff --git a/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java b/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java index 9c14e5b4..4f0b81be 100644 --- a/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java +++ b/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.ast.untyped.UntypedNamespaceNode; import org.shedlang.compiler.types.NamespaceName; import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.isUntypedFunctionDefinitionNode; +import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.isUntypedImportNode; import static org.shedlang.compiler.parser.ParserTesting.parseString; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.*; @@ -49,4 +50,24 @@ public class ParserNamespaceTests { )) )); } + + @Test + public void canParseNamespaceWithImports() { + var source = """ + import One; + import Two/Three;"""; + + var node = parseString( + source, + tokens -> Parser.parseNamespace(tokens, NamespaceName.of("Example", "Project")) + ); + + assertThat(node, instanceOf( + UntypedNamespaceNode.class, + has("imports", x -> x.imports(), isSequence( + isUntypedImportNode(NamespaceName.of("One")), + isUntypedImportNode(NamespaceName.of("Two", "Three")) + )) + )); + } } -- cgit v1.2.3