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() {