aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java6
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()));