diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java b/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java index b6134ed2..404e57e6 100644 --- a/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java +++ b/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java @@ -66,4 +66,29 @@ public class ConfigCheckerTests { assertThat(error.getMessage(), equalTo("Namespace Main has no field main")); } + + @Test + public void whenMainFunctionHasWrongTypeThenBinConfigIsInvalid() throws IOException { + var binConfig = new BinConfig("x", NamespaceName.of("Main")); + var typeInfos = TypeInfos.EMPTY + .addNamespaceTypeInfo( + NamespaceName.of("Main"), + NamespaceTypeInfo.fromFields(P.orderedMap( + Map.entry( + "main", + new FunctionType(List.of(), List.of(), Effects.IO, Types.STRING) + ) + )) + ); + + var error = assertThrows( + ConfigError.class, + () -> ConfigChecker.configCheckBin(binConfig, typeInfos) + ); + + assertThat( + error.getMessage(), + equalTo("main function should have type fn () ! Io -> Unit, but Main.main has type fn () ! Io -> String") + ); + } } |
