summaryrefslogtreecommitdiff
path: root/testsuite/tests/deriving/should_run/T10447.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/deriving/should_run/T10447.hs')
-rw-r--r--testsuite/tests/deriving/should_run/T10447.hs41
1 files changed, 41 insertions, 0 deletions
diff --git a/testsuite/tests/deriving/should_run/T10447.hs b/testsuite/tests/deriving/should_run/T10447.hs
new file mode 100644
index 0000000000..e91ce98f64
--- /dev/null
+++ b/testsuite/tests/deriving/should_run/T10447.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE DeriveFoldable, GADTs, StandaloneDeriving #-}
+module Main where
+
+class (a ~ Int) => Foo a
+instance Foo Int
+
+data A a where
+ A1 :: Ord a => a -> A a
+ A2 :: Int -> A Int
+ A3 :: b ~ Int => b -> A Int
+ A4 :: a ~ Int => Int -> A a
+ A5 :: a ~ Int => a -> A a
+ A6 :: (a ~ b, b ~ Int) => Int -> b -> A a
+ A7 :: Foo a => Int -> a -> A a
+
+deriving instance Foldable A
+
+data HK f a where
+ HK1 :: f a -> HK f (f a)
+ HK2 :: f a -> HK f a
+
+deriving instance Foldable f => Foldable (HK f)
+
+one :: Int
+one = 1
+
+main :: IO ()
+main = do
+ mapM_ (print . foldr (+) one)
+ [ A1 one
+ , A2 one
+ , A3 one
+ , A4 one
+ , A5 one
+ , A6 one one
+ , A7 one one
+ ]
+ mapM_ (print . foldr mappend Nothing)
+ [ HK1 (Just "Hello")
+ , HK2 (Just (Just "World"))
+ ]