diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIsSubTypeTests.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIsSubTypeTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIsSubTypeTests.java index 5f7fede9..33e47ff8 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIsSubTypeTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIsSubTypeTests.java @@ -189,6 +189,27 @@ public class TypeCheckerIsSubTypeTests { assertThat(error.actual(), equalTo(Types.INT)); } + @Test + public void whenSubtypeIsFreeTypeParamThenOtherTypesAreNotSupertype() { + var typeParam = TypeParam.forStructType( + Types.struct(NamespaceName.of("Example"), "Struct"), + "T" + ); + + var error = assertThrows( + UnexpectedTypeError.class, + () -> TypeCheckerSubTyping.addSubtypeConstraint( + typeParam, + Types.INT, + Sources.NULL, + TypeCheckerSubTyping.constraints(List.of(), TypeInfos.EMPTY) + ) + ); + + assertThat(error.expected(), equalTo(TypeSets.type(Types.INT))); + assertThat(error.actual(), equalTo(typeParam)); + } + // == Sum types == @Test |
