aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-10-22 13:27:31 +0100
committerMichael Williamson <mike@zwobble.org>2023-10-22 13:27:31 +0100
commit296fa6ee9ee63089603c8bb13bb7d3346f85a037 (patch)
tree0754151b4533fd9c9c315ef361879fdc12160cdd /src/test/java
parent5831a308f4d8f9e83821fffff67a2141cc76d26b (diff)
Add explicit visibility
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java10
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java49
2 files changed, 40 insertions, 19 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java b/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java
index dde00bca..c5a27329 100644
--- a/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java
+++ b/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java
@@ -195,16 +195,6 @@ public class TypedNodeMatchers {
return TypedNamespaceNodeMatcher.empty();
}
- public static Matcher<TypedNamespaceNode> isTypedNamespaceNode(
- Matcher<Iterable<? extends TypedNamespaceStatementNode>> body,
- Matcher<? super Iterable<? extends String>> fieldNames
- ) {
- return allOf(
- has("body", x -> x.body(), body),
- has("fieldNames", x -> x.fieldNames(), fieldNames)
- );
- }
-
public static Matcher<TypedParamNode> isTypedParamNode(
String name,
Matcher<TypedTypeLevelExpressionNode<?>> type
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java
index bddd7ba6..85515dad 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java
@@ -29,7 +29,9 @@ public class TypeCheckerNamespaceTests {
assertThat(
result.value(),
- isTypedNamespaceNode(isSequence(), isSequence())
+ isTypedNamespaceNode()
+ .withImports(isSequence())
+ .withBody(isSequence())
);
}
@@ -70,12 +72,9 @@ public class TypeCheckerNamespaceTests {
assertThat(
result.value(),
- isTypedNamespaceNode(
- isSequence(
- isTypedFunctionDefinitionNode().withName("f")
- ),
- isSequence(equalTo("f"))
- )
+ isTypedNamespaceNode().withBody(isSequence(
+ isTypedFunctionDefinitionNode().withName("f")
+ ))
);
}
@@ -493,7 +492,7 @@ public class TypeCheckerNamespaceTests {
}
@Test
- public void typesOfFieldsAreStored() {
+ public void namespaceFieldsIncludesPublicFields() {
var namespaceName = NamespaceName.of("Example");
var untyped = Untyped.namespace(
namespaceName,
@@ -501,6 +500,38 @@ public class TypeCheckerNamespaceTests {
UntypedFunctionDefinitionNode.builder()
.withName("f")
.withReturnType(Untyped.typeLevelReference("Unit"))
+ .withVisibility(Visibility.PRIVATE)
+ .build(),
+ UntypedFunctionDefinitionNode.builder()
+ .withName("g")
+ .withReturnType(Untyped.typeLevelReference("Unit"))
+ .withVisibility(Visibility.PUBLIC)
+ .build()
+ )
+ );
+ var context = TypeCheckerContext.EMPTY
+ .enterGlobal(P.map(Map.entry("Unit", Types.metaType(Types.UNIT))));
+
+ var result = TypeChecker.typeCheckNamespace(untyped, context);
+
+ assertThat(result.value().fieldNames(), isSequence(equalTo("g")));
+ }
+
+ @Test
+ public void namespaceTypeIncludesPublicFields() {
+ var namespaceName = NamespaceName.of("Example");
+ var untyped = Untyped.namespace(
+ namespaceName,
+ List.of(
+ UntypedFunctionDefinitionNode.builder()
+ .withName("f")
+ .withReturnType(Untyped.typeLevelReference("Unit"))
+ .withVisibility(Visibility.PRIVATE)
+ .build(),
+ UntypedFunctionDefinitionNode.builder()
+ .withName("g")
+ .withReturnType(Untyped.typeLevelReference("Unit"))
+ .withVisibility(Visibility.PUBLIC)
.build()
)
);
@@ -515,7 +546,7 @@ public class TypeCheckerNamespaceTests {
assertThat(
namespaceTypeInfo,
equalTo(NamespaceTypeInfo.fromFields(P.orderedMap(
- Map.entry("f", new FunctionType(List.of(), List.of(), Effects.NONE, Types.UNIT))
+ Map.entry("g", new FunctionType(List.of(), List.of(), Effects.NONE, Types.UNIT))
)))
);
}