diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-05 23:34:10 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-05 23:34:10 +0000 |
| commit | 87a5266dc5224abe7d2755f6b5072898ce18aeb2 (patch) | |
| tree | 2fd1c3ce54c47f1cbe04962f181e3caf9c4c1e2f /src/main/java | |
| parent | c9370b6a47604e9d0af6adf482651611a4f01dbb (diff) | |
Simplify handling of constructed type subtyping
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 12 |
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 ( |
