From ade0f22b0c96e7a2a9eea258a209f5a5cb523715 Mon Sep 17 00:00:00 2001 From: Michael Sippel <micha@fragmental.art> Date: Sat, 3 May 2025 18:45:15 +0200 Subject: [PATCH] add test to break halo type --- src/test/unification.rs | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/test/unification.rs b/src/test/unification.rs index 64797aa..157c68b 100644 --- a/src/test/unification.rs +++ b/src/test/unification.rs @@ -336,6 +336,53 @@ fn test_subtype_unification2() { ); } +#[test] +fn test_subtype_unification3() { + let mut dict = BimapTypeDict::new(); + + assert_eq!( + ConstraintSystem::new_sub(vec![ + ConstraintPair { + addr: Vec::new(), + lhs: dict.parse("<A1~A2 B C D1~D2 E F1~F2>").expect("parse"), + rhs: dict.parse("<A2 B C D2 E F2>").expect("parse") + } + ]).solve(), + + Ok(( + // halo + vec![ + dict.parse("<A1~A2 B C D1~D2 E F1>").expect("parse") + ], + + // subst + vec![ + ].into_iter().collect() + )) + ); + + assert_eq!( + ConstraintSystem::new_sub(vec![ + ConstraintPair { + addr: Vec::new(), + lhs: dict.parse("<Seq~List B C D1~D2 E F1~F2>").expect("parse"), + rhs: dict.parse("<List B C D2 E F2>").expect("parse") + } + ]).solve(), + + Ok(( + // halo + vec![ + dict.parse("<Seq~List B C D1~D2 E F1>").expect("parse") + ], + + // subst + vec![ + ].into_iter().collect() + )) + ); +} + #[test] fn test_trait_not_subtype() {