summaryrefslogtreecommitdiff
path: root/tests/examples/ghc86/T3263-2.hs
blob: a1f07bbd270872840bc6eaa92de60fc1d75091ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
-- Trac #3263.  New kind of warning on monadic bindings that discard a monadic result
{-# LANGUAGE RankNTypes #-}

module T3263 where

import Control.Monad.Fix

-- No warning
t1 :: Monad m => m Int
t1 = do
  return 10

-- No warning
t2 :: Monad m => m (m Int)
t2 = return (return 10)

-- No warning
t3 :: Monad m => m (m Int)
t3 = do
  return 10
  return (return 10)

-- Warning
t4 :: forall m. Monad m => m Int
t4 = do
  return (return 10 :: m Int)
  return 10

-- No warning
t5 :: forall m. Monad m => m Int
t5 = do
  _ <- return (return 10 :: m Int)
  return 10

-- Warning
t6 :: forall m. MonadFix m => m Int
t6 = mdo
  return (return 10 :: m Int)
  return 10