diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-03-02 15:24:31 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-03-02 15:25:59 +0000 |
| commit | 36aad08599b78b8ec034f567ee41ec7fa3dc5a02 (patch) | |
| tree | 2cc8465164c919bd1f3a40f2e179f26805c38f4a /src/main/java | |
| parent | 2bc60a8737e326a6763afe786027bd3ab2389f44 (diff) | |
Handle effect constraints in function subtyping
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 11 |
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(); } |
