diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-03-02 19:59:51 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-03-02 19:59:51 +0000 |
| commit | 02d0212a2695275d25783932982d14a8a3c1a1ec (patch) | |
| tree | 472af68c8e9f147e68fba577cd6bdc9da1a94ce4 /src/test/java | |
| parent | 1f73c6fcd01e6c3b3c0e7ca0b30fb46de56f0b59 (diff) | |
Support accessing native methods
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerMemberAccessTests.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerMemberAccessTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerMemberAccessTests.java index 4e0d31fc..d9f7455a 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerMemberAccessTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerMemberAccessTests.java @@ -19,6 +19,36 @@ import static org.zwobble.precisely.Matchers.equalTo; public class TypeCheckerMemberAccessTests { @Test + public void canAccessMethodOnNativeType() { + var untyped = Untyped.memberAccess( + Untyped.reference("user"), + "name" + ); + var nativeType = Types.nativeType(NamespaceName.of("Example"), "User"); + var methodType = FunctionType.builder() + .withReturnType(Types.BOOL) + .build(); + var nativeTypeInfo = NativeTypeInfo.builder() + .addMethod("name", methodType) + .build(); + var context = TypeCheckerContext.EMPTY + .enterGlobal(P.map(Map.entry("user", nativeType))) + .addNativeTypeInfo(nativeType, nativeTypeInfo); + + var typed = typeCheckExpression(untyped, context); + + assertThat( + typed.value(), + isTypedMemberAccessNode( + isTypedReferenceNode("user", nativeType), + "name", + MemberKind.METHOD, + methodType + ) + ); + } + + @Test public void canAccessFieldOnStructType() { var untyped = Untyped.memberAccess( Untyped.reference("user"), |
