diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 6 |
1 files changed, 5 insertions, 1 deletions
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())); |
