aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-03-02 15:24:31 +0000
committerMichael Williamson <mike@zwobble.org>2024-03-02 15:25:59 +0000
commit36aad08599b78b8ec034f567ee41ec7fa3dc5a02 (patch)
tree2cc8465164c919bd1f3a40f2e179f26805c38f4a /src/main/java
parent2bc60a8737e326a6763afe786027bd3ab2389f44 (diff)
Handle effect constraints in function subtyping
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java11
1 files changed, 10 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 935d1078..89b73f84 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java
@@ -353,7 +353,16 @@ public class TypeCheckerSubTyping {
}
}
- if (!isSubEffect(subtypeFunction.effect(), supertypeFunction.effect(), constraints.typeInfos)) {
+ var effectResult = tryAddSubeffectConstraint(
+ subtypeFunction.effect(),
+ supertypeFunction.effect(),
+ constraints
+ );
+
+ if (effectResult.isPresent()) {
+ // TODO: test assignment
+ constraints = effectResult.get();
+ } else {
return Optional.empty();
}