diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-01-22 11:27:30 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-01-27 08:32:12 -0500 |
commit | def84a10dd9db34d86284cb0b8358261034eecc4 (patch) | |
tree | 8e14ef8e35cfcc5cdd5742473740e35a0a79b229 | |
parent | dc6fd390c64a2ee7c3df1da116504a5faf0afea5 (diff) | |
download | haskell-def84a10dd9db34d86284cb0b8358261034eecc4.tar.gz |
testsuite: Add tests from #11982
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, ['']) |