summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-01-22 11:27:30 -0500
committerBen Gamari <ben@well-typed.com>2019-01-22 15:07:54 -0500
commitc16ed9828f296b8f9e0545b00ddc80204c14f699 (patch)
tree79dbf3cfaf3871f12af2182a2bb3e417cbe54aec
parenta5373c1fe172dee31e07bcb7c7f6caff1035e6ba (diff)
downloadhaskell-wip/T11982-test.tar.gz
testsuite: Add tests from #11982wip/T11982-test
-rw-r--r--testsuite/tests/typecheck/should_compile/T11982a.hs7
-rw-r--r--testsuite/tests/typecheck/should_compile/T11982b.hs17
-rw-r--r--testsuite/tests/typecheck/should_compile/T11982c.hs18
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T3
4 files changed, 45 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_compile/T11982a.hs b/testsuite/tests/typecheck/should_compile/T11982a.hs
new file mode 100644
index 0000000000..1928bf2104
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T11982a.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE MonadComprehensions, ParallelListComp #-}
+
+module Foo where
+
+foo xs ys = [ (f y True, f x 'c')
+ | let f _ z = z, x <- xs
+ | y <- ys ]
diff --git a/testsuite/tests/typecheck/should_compile/T11982b.hs b/testsuite/tests/typecheck/should_compile/T11982b.hs
new file mode 100644
index 0000000000..5c695d2662
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T11982b.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ApplicativeDo #-}
+module Main where
+import Control.Concurrent.MVar
+
+type Locker = forall a. IO a -> IO a
+
+main :: IO ()
+main = do
+ line <- getLine
+ lock <- newMVar ()
+ let locker :: Locker
+ locker = withMVar lock . const
+ f line locker
+
+f :: String -> Locker -> IO ()
+f line locker = locker $ putStrLn line
diff --git a/testsuite/tests/typecheck/should_compile/T11982c.hs b/testsuite/tests/typecheck/should_compile/T11982c.hs
new file mode 100644
index 0000000000..cdc4a985d3
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T11982c.hs
@@ -0,0 +1,18 @@
+-- This is similar to T11982b but 'locker' inlined which allows the module to
+-- compile.
+
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ApplicativeDo #-}
+module Main where
+import Control.Concurrent.MVar
+
+type Locker = forall a. IO a -> IO a
+
+main :: IO ()
+main = do
+ line <- getLine
+ lock <- newMVar ()
+ f line $ withMVar lock . const
+
+f :: String -> Locker -> IO ()
+f line locker = locker $ putStrLn line
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index 3ad727d97e..b032121ad7 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -511,6 +511,9 @@ test('T11811', normal, compile, [''])
test('T11793', normal, compile, [''])
test('T11348', normal, compile, [''])
test('T11947', normal, compile, [''])
+test('T11982a', expect_broken(11982), compile, [''])
+test('T11982b', expect_broken(11982), compile, [''])
+test('T11982c', normal, compile, [''])
test('T12045a', normal, compile, [''])
test('T12064', [], multimod_compile, ['T12064', '-v0'])
test('ExPat', normal, compile, [''])