From 87a79dc241771b8b1ab72f27ecd2bcb63c9e8eb8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 5 Jan 2024 23:46:58 +0000 Subject: Use upper bound in the absence of lower bounds --- .../org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/org') diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java index 75b49f39..cacb1c78 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java @@ -95,7 +95,11 @@ public class TypeCheckerSubTyping { throw new IllegalStateException("Incompatible type bounds"); } - return Map.entry(typeParam, lowerBound); + var inferredType = typeParamBounds.lower.isEmpty() && !typeParamBounds.upper.isEmpty() + ? upperBound + : lowerBound; + + return Map.entry(typeParam, inferredType); }) .collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue())); -- cgit v1.2.3