Commit d6bc56c0 authored by simonpj's avatar simonpj
Browse files

Test Trac #4174

parent e1d9ee14
{-# 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
T4174.hs:42:12:
Couldn't match type `False' with `True'
Expected type: True
Actual type: GHC6'10 Minor1 :<=: GHCVersion (WayOf m)
In the expression: sync_large_objects
In an equation for `testcase': testcase = sync_large_objects
T4174.hs:42:12:
Could not deduce (a ~ SmStep) from the context (Monad m)
`a' is a rigid type variable bound by
the type signature for `testcase' at T4174.hs:41:60
In the expression: sync_large_objects
In an equation for `testcase': testcase = sync_large_objects
T4174.hs:42:12:
Could not deduce (b ~ RtsSpinLock) from the context (Monad m)
`b' is a rigid type variable bound by
the type signature for `testcase' at T4174.hs:41:62
In the expression: sync_large_objects
In an equation for `testcase': testcase = sync_large_objects
T4174.hs:42:12:
Could not deduce (p ~ True) from the context (Monad m)
`p' is a rigid type variable bound by
the type signature for `testcase' at T4174.hs:41:57
Expected type: True
Actual type: Threaded (WayOf m)
In the expression: sync_large_objects
In an equation for `testcase': testcase = sync_large_objects
......@@ -64,3 +64,5 @@ test('T4254', normal, compile_fail, [''])
test('T2239', normal, compile_fail, [''])
test('T3440', normal, compile_fail, [''])
test('T4485', normal, compile_fail, [''])
test('T4174', normal, compile_fail, [''])
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment