summaryrefslogtreecommitdiff
path: root/testsuite/tests/pmcheck/should_compile/T11822.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/pmcheck/should_compile/T11822.hs')
-rw-r--r--testsuite/tests/pmcheck/should_compile/T11822.hs42
1 files changed, 42 insertions, 0 deletions
diff --git a/testsuite/tests/pmcheck/should_compile/T11822.hs b/testsuite/tests/pmcheck/should_compile/T11822.hs
new file mode 100644
index 0000000000..01afdf46c3
--- /dev/null
+++ b/testsuite/tests/pmcheck/should_compile/T11822.hs
@@ -0,0 +1,42 @@
+{-# OPTIONS_GHC -Wincomplete-patterns -fforce-recomp #-}
+{-# LANGUAGE OverloadedLists #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE GeneralisedNewtypeDeriving #-}
+
+module T11822 where
+
+import Data.Sequence (Seq, pattern (:<|))
+import Data.Set (Set)
+
+newtype SiblingDependencies = SiblingDependencies Int
+ deriving (Eq, Ord, Enum, Integral, Real, Num)
+
+newtype Depth = Depth Int
+ deriving (Eq, Ord, Enum, Integral, Real, Num)
+
+data TreeNode prefix
+ = OnlyChild prefix
+ | LeafLast prefix
+ | LeafMid prefix
+ | NodeLast prefix
+ | NodeMid prefix
+ | PrefixedLast prefix (Seq SiblingDependencies) (Set prefix) Depth
+ | PrefixedMid prefix (Seq SiblingDependencies) (Set prefix) Depth
+
+mkTreeNode
+ :: Ord prefix
+ => prefix
+ -> Seq SiblingDependencies
+ -> Set prefix
+ -> Depth
+ -> TreeNode prefix
+mkTreeNode t [] _ _ = OnlyChild t
+mkTreeNode t [0] [] _ = LeafLast t
+mkTreeNode t [_] [] _ = LeafMid t
+mkTreeNode t [0] _ 0 = LeafLast t
+mkTreeNode t [_] _ 0 = LeafMid t
+mkTreeNode t [0] _ _ = NodeLast t
+mkTreeNode t [_] _ _ = NodeMid t
+mkTreeNode t (0 :<| ns) ds depth = PrefixedLast t ns ds depth
+mkTreeNode t (_ :<| ns) ds depth = PrefixedMid t ns ds depth
+