diff options
Diffstat (limited to 'testsuite/tests/indexed-types/should_compile/T4338.hs')
-rw-r--r-- | testsuite/tests/indexed-types/should_compile/T4338.hs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/testsuite/tests/indexed-types/should_compile/T4338.hs b/testsuite/tests/indexed-types/should_compile/T4338.hs new file mode 100644 index 0000000000..6fa2ae85ac --- /dev/null +++ b/testsuite/tests/indexed-types/should_compile/T4338.hs @@ -0,0 +1,23 @@ +{-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleContexts #-} + +module Main where + +class (There a ~ b, BackAgain b ~ a) => Foo a b where + type There a + type BackAgain b + there :: a -> b + back :: b -> a + tickle :: b -> b + +instance Foo Char Int where + type There Char = Int + type BackAgain Int = Char + there = fromEnum + back = toEnum + tickle = (+1) + +test :: (Foo a b) => a -> a +test = back . tickle . there + +main :: IO () +main = print $ test 'F' |