aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-05 23:34:10 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-05 23:34:10 +0000
commit87a5266dc5224abe7d2755f6b5072898ce18aeb2 (patch)
tree2fd1c3ce54c47f1cbe04962f181e3caf9c4c1e2f /src/main/java
parentc9370b6a47604e9d0af6adf482651611a4f01dbb (diff)
Simplify handling of constructed type subtyping
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java
index 6260c9ef..75b49f39 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java
@@ -183,28 +183,24 @@ public class TypeCheckerSubTyping {
subtype instanceof ConstructedType<?> subtypeConstructed &&
supertypeConstructed.constructor().equals(subtypeConstructed.constructor())
) {
- var failed = false;
for (var i = 0; i < subtypeConstructed.constructor().params().size(); i++) {
var subtypeArg = subtypeConstructed.args().get(i);
var supertypeArg = supertypeConstructed.args().get(i);
var result1 = tryAddSubtypeConstraint(subtypeArg, supertypeArg, constraints);
if (result1.isEmpty()) {
- failed = true;
- break;
+ return Optional.empty();
}
constraints = result1.get();
var result2 = tryAddSubtypeConstraint(supertypeArg, subtypeArg, constraints);
if (result2.isEmpty()) {
- failed = true;
- break;
+ return Optional.empty();
}
constraints = result2.get();
}
- if (!failed) {
- return Optional.of(constraints);
- }
+
+ return Optional.of(constraints);
}
if (