diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-05 23:46:58 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-05 23:46:58 +0000 |
| commit | 87a79dc241771b8b1ab72f27ecd2bcb63c9e8eb8 (patch) | |
| tree | 0faabce5781e028ee21463d132abd9d6b11e1ae9 /src/main/java/org | |
| parent | 87a5266dc5224abe7d2755f6b5072898ce18aeb2 (diff) | |
Use upper bound in the absence of lower bounds
Diffstat (limited to 'src/main/java/org')
| -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())); |
