From 87a5266dc5224abe7d2755f6b5072898ce18aeb2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 5 Jan 2024 23:34:10 +0000 Subject: Simplify handling of constructed type subtyping --- .../shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/main/java') 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 ( -- cgit v1.2.3