summaryrefslogtreecommitdiff
path: root/testsuite/tests/indexed-types/should_fail/T4174.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/indexed-types/should_fail/T4174.hs')
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4174.hs60
1 files changed, 60 insertions, 0 deletions
diff --git a/testsuite/tests/indexed-types/should_fail/T4174.hs b/testsuite/tests/indexed-types/should_fail/T4174.hs
new file mode 100644
index 0000000000..784c0baa08
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T4174.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE TypeFamilies, TypeOperators, EmptyDataDecls #-}
+
+module T4174 where
+
+data True
+data False
+
+data Minor1
+
+data GHC6'8 m
+data GHC6'10 m
+
+type family a :<=: b :: {-Bool-}*
+type instance GHC6'10 m1 :<=: GHC6'8 m2 = False
+
+type a :>=: b = b :<=: a
+
+data Way ghcVersion tablesNextToCode profiling threaded
+
+type family GHCVersion way :: {-GHCVersion-} *
+type instance GHCVersion (Way v n p t) = v
+
+type family Threaded way :: {-Bool-} *
+type instance Threaded (Way v n p t) = t
+
+data Field w s t
+data SmStep
+data RtsSpinLock
+
+field :: String -> m (Field w a b)
+field = undefined
+
+type family WayOf (m :: * -> *) :: *
+
+sync_large_objects :: (Monad m,
+ (GHCVersion (WayOf m) :>=: GHC6'10 Minor1) ~ True,
+ Threaded (WayOf m) ~ True)
+ => m (Field (WayOf m) SmStep RtsSpinLock)
+sync_large_objects = field "sync_large_objects"
+
+testcase :: Monad m => m (Field (Way (GHC6'8 minor) n t p) a b)
+testcase = sync_large_objects
+
+{- Wanted constraints from the occurrence of sync_large_objects
+
+ (WayOf m) ~ (Way (GHC6'8 minor) n t p)
+ a ~ SmStep
+ b ~ RtsSpinLock
+
+ Threaded (WayOf m) ~ True
+ == Threaded (Way (GHC6'8 minor) n t p) ~ True
+ == p ~ True
+
+ (GHCVersion (WayOf m) :>=: GHC6'10 Minor1) ~ True,
+ == (GHC6'10 Minor1 :<=: GHCVersion (WayOf m)) ~ True,
+ == (GHC6'10 Minor1 :<=: GHCVersion (Way (GHC6'8 minor) n t p))) ~ True,
+ == (GHC6'10 Minor1 :<=: GHC6'8 minor) ~ True
+ == False ~ True
+
+-} \ No newline at end of file