summaryrefslogtreecommitdiff
path: root/testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2011-07-20 11:09:03 -0700
committerDavid Terei <davidterei@gmail.com>2011-07-20 11:26:35 -0700
commit16514f272fb42af6e9c7674a9bd6c9dce369231f (patch)
treee4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs
parentebd422aed41048476aa61dd4c520d43becd78682 (diff)
downloadhaskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs')
-rw-r--r--testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs33
1 files changed, 33 insertions, 0 deletions
diff --git a/testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs b/testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs
new file mode 100644
index 0000000000..712f14a3b5
--- /dev/null
+++ b/testsuite/tests/deriving/should_compile/drv-foldable-traversable1.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE FlexibleContexts, DatatypeContexts #-}
+
+module ShouldCompile where
+
+import Data.Foldable
+import Data.Traversable
+
+data Trivial a = Trivial
+ deriving (Functor,Foldable,Traversable)
+
+-- lots of different things
+data Strange a b c
+ = T1 a b c
+ | T2 c c c
+ | T3 [a] [b] [c] -- lists
+ | T4 [[a]] [[b]] [[c]] -- nested lists
+ | T5 (c,(b,b),(c,c)) -- tuples
+ | T6 ([c],Strange a b c) -- tycons
+ deriving (Functor,Foldable,Traversable)
+
+data NotPrimitivelyRecursive a
+ = S1 (NotPrimitivelyRecursive (a,a))
+ | S2 a
+ deriving (Functor,Foldable,Traversable)
+
+data Eq a => StupidConstraint a b = Stupid a b
+ deriving (Functor,Foldable,Traversable)
+
+-- requires Foldable/Traversable constraint on f and g
+data Compose f g a = Compose (f (g a))
+ deriving (Functor,Foldable,Traversable)