diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-28 11:10:19 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-28 11:10:19 +0100 |
| commit | 5dd379c50eb0a9eff9ab87c7edf9cb10c20529e0 (patch) | |
| tree | f9d6277c547e2520630f0cbbc297a4ef2a9ac27a /src/test/java | |
| parent | 8d3e6ce5e6c77ff27e99f0f8ca0b22ff943b7d3f (diff) | |
Add struct type info during type checking
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java index f8cb0fc5..325f7ea7 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java @@ -83,6 +83,31 @@ public class TypeCheckerStructDefinitionTests { ); } + @Test + public void typesOfFieldsAreStored() { + var untyped = UntypedStructDefinitionNode.builder() + .withName("ExampleStruct") + .addField(Untyped.structFieldDefinition("b", Untyped.typeLevelReference("Bool"))) + .addField(Untyped.structFieldDefinition("a", Untyped.typeLevelReference("Int"))) + .build(); + var context = TypeCheckerContext.EMPTY + .enterGlobal(P.map( + Map.entry("Bool", Types.metaType(Types.BOOL)), + Map.entry("Int", Types.metaType(Types.INT)) + )); + + var typed = typeCheckNamespaceStatement(untyped, context); + + assertThat( + typed.context().structTypeInfo().get(Types.struct(NAMESPACE_NAME, "ExampleStruct")), + // TODO: builder for OrderedPMap + has("fields", x -> x.fields().entrySet(), isSequence( + equalTo(Map.entry("b", Types.BOOL)), + equalTo(Map.entry("a", Types.INT)) + )) + ); + } + private static TypeCheckerResult<? extends TypedNamespaceStatementNode> typeCheckNamespaceStatement( UntypedNamespaceStatementNode untyped, TypeCheckerContext context |
