From 1888019d4655fb280efa82f91602a1ed2790c242 Mon Sep 17 00:00:00 2001 From: Felipe705x Date: Sun, 26 Apr 2026 13:01:21 -0400 Subject: [PATCH] fix: gradual semantics and priority --- src/ast/label.rs | 8 ++++---- src/typechecker/variable_type.rs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ast/label.rs b/src/ast/label.rs index 06aa185..9e56f32 100644 --- a/src/ast/label.rs +++ b/src/ast/label.rs @@ -47,14 +47,14 @@ impl LabelType { (_, LabelType::And(left, right)) => { LabelType::is_subtype(l1, left) && LabelType::is_subtype(l1, right) } + (_, LabelType::Or(left, right)) => { + LabelType::is_subtype(l1, left) || LabelType::is_subtype(l1, right) + } (LabelType::And(left, right), _) => { LabelType::is_subtype(left, l2) || LabelType::is_subtype(right, l2) } (LabelType::Or(left, right), _) => { - LabelType::is_subtype(left, l2) && LabelType::is_subtype(right, l2) - } - (_, LabelType::Or(left, right)) => { - LabelType::is_subtype(l1, left) || LabelType::is_subtype(l1, right) + LabelType::is_subtype(left, l2) || LabelType::is_subtype(right, l2) } } } diff --git a/src/typechecker/variable_type.rs b/src/typechecker/variable_type.rs index 80b8033..0a424f3 100644 --- a/src/typechecker/variable_type.rs +++ b/src/typechecker/variable_type.rs @@ -288,7 +288,7 @@ impl VariableType { VariableType::is_subtype(inner1, inner2) } (VariableType::Union(t1a, t1b), _) => { - VariableType::is_subtype(t1a, t2) && VariableType::is_subtype(t1b, t2) + VariableType::is_subtype(t1a, t2) || VariableType::is_subtype(t1b, t2) } (_, VariableType::Union(t2a, t2b)) => { VariableType::is_subtype(t1, t2a) || VariableType::is_subtype(t1, t2b)