summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_compile/T3955.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/typecheck/should_compile/T3955.hs')
-rw-r--r--testsuite/tests/typecheck/should_compile/T3955.hs24
1 files changed, 24 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_compile/T3955.hs b/testsuite/tests/typecheck/should_compile/T3955.hs
new file mode 100644
index 0000000000..921753b80a
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T3955.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
+
+-- Test for Trac #3955
+
+module T3955 where
+
+class (Monad m) => MonadReader r m
+newtype Reader r a = Reader { runReader :: r -> a }
+
+instance Monad (Reader r) where
+ (>>=) = error "urk"
+ return = error "urk"
+
+instance MonadReader r (Reader r)
+
+newtype T a x = T (Reader a x)
+ deriving (Monad, MonadReader a)
+
+{-
+[1 of 1] Compiling Main ( bug.hs, interpreted )
+mkUsageInfo: internal name? a{tv amy}
+Ok, modules loaded: Main.
+-}