summaryrefslogtreecommitdiff
path: root/testsuite/tests/rebindable/rebindable8.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/rebindable/rebindable8.hs')
-rw-r--r--testsuite/tests/rebindable/rebindable8.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/testsuite/tests/rebindable/rebindable8.hs b/testsuite/tests/rebindable/rebindable8.hs
new file mode 100644
index 0000000000..2c1f484f47
--- /dev/null
+++ b/testsuite/tests/rebindable/rebindable8.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE RebindableSyntax, MultiParamTypeClasses #-}
+
+-- Trac #1537
+
+module Foo where
+import Prelude hiding (Monad(..))
+
+class Bind m1 m2 m3 where
+ (>>=) :: m1 a -> (a -> m2 b) -> m3 b
+
+class Return m where
+ return :: a -> m a
+ fail :: String -> m a
+
+instance Bind Maybe [] [] where
+ Just x >>= f = f x
+ Nothing >>= f = []
+
+instance Return [] where
+ return x = [x]
+ fail _ = []
+
+should_compile :: [Int]
+should_compile = do
+ a <- Just 1
+ [a]