Testsuite: delete Windows line endings [skip ci] (#11631)
authorThomas Miedema <thomasmiedema@gmail.com>
Mon, 22 Feb 2016 20:31:35 +0000 (21:31 +0100)
committerThomas Miedema <thomasmiedema@gmail.com>
Tue, 23 Feb 2016 11:27:40 +0000 (12:27 +0100)
59 files changed:
testsuite/tests/rts/T2047.hs
testsuite/tests/simplCore/should_compile/T4201.hs
testsuite/tests/simplCore/should_compile/T5366.hs
testsuite/tests/simplCore/should_compile/T7287.hs
testsuite/tests/simplCore/should_compile/rule1.hs
testsuite/tests/simplCore/should_run/T5441.hs
testsuite/tests/simplCore/should_run/T5441a.hs
testsuite/tests/stranal/should_compile/T8037.hs
testsuite/tests/th/T2597a.hs
testsuite/tests/th/T2597a_Lib.hs
testsuite/tests/th/T2597b.hs
testsuite/tests/th/T2597b_Lib.hs
testsuite/tests/th/T2700.hs
testsuite/tests/th/T2713.hs
testsuite/tests/th/T3395.hs
testsuite/tests/th/T3467.hs
testsuite/tests/th/T5404.hs
testsuite/tests/th/T5410.hs
testsuite/tests/th/T5665.hs
testsuite/tests/th/T5737.hs
testsuite/tests/th/T8954.hs
testsuite/tests/th/TH_1tuple.hs
testsuite/tests/th/TH_NestedSplices.hs
testsuite/tests/th/TH_NestedSplices_Lib.hs
testsuite/tests/typecheck/should_compile/FD2.hs
testsuite/tests/typecheck/should_compile/FD4.hs
testsuite/tests/typecheck/should_compile/GivenTypeSynonym.hs
testsuite/tests/typecheck/should_compile/T2572.hs
testsuite/tests/typecheck/should_compile/T5120.hs
testsuite/tests/typecheck/should_compile/T5595.hs
testsuite/tests/typecheck/should_compile/T7268.hs
testsuite/tests/typecheck/should_compile/T7384.hs
testsuite/tests/typecheck/should_compile/T7888.hs
testsuite/tests/typecheck/should_compile/faxen.hs
testsuite/tests/typecheck/should_compile/tc190.hs
testsuite/tests/typecheck/should_compile/tc240.hs
testsuite/tests/typecheck/should_compile/tc247.hs
testsuite/tests/typecheck/should_fail/FailDueToGivenOverlapping.hs
testsuite/tests/typecheck/should_fail/LongWayOverlapping.hs
testsuite/tests/typecheck/should_fail/SCLoop.hs
testsuite/tests/typecheck/should_fail/T2126.hs
testsuite/tests/typecheck/should_fail/T2714.hs
testsuite/tests/typecheck/should_fail/T3406.hs
testsuite/tests/typecheck/should_fail/T3592.hs
testsuite/tests/typecheck/should_fail/T3613.hs
testsuite/tests/typecheck/should_fail/T3950.hs
testsuite/tests/typecheck/should_fail/T4875.hs
testsuite/tests/typecheck/should_fail/T5246.hs
testsuite/tests/typecheck/should_fail/T5689.hs
testsuite/tests/typecheck/should_fail/T5978.hs
testsuite/tests/typecheck/should_fail/T6022.hs
testsuite/tests/typecheck/should_fail/T7892.hs
testsuite/tests/typecheck/should_fail/fd-loop.hs
testsuite/tests/typecheck/should_fail/tcfail136.hs
testsuite/tests/typecheck/should_fail/tcfail140.hs
testsuite/tests/typecheck/should_fail/tcfail146.hs
testsuite/tests/typecheck/should_fail/tcfail147.hs
testsuite/tests/typecheck/should_fail/tcfail189.hs
testsuite/tests/typecheck/should_fail/tcfail193.hs

index 08b7266..8ea791e 100644 (file)
-module Main where\r
-\r
-import qualified Data.Set as Set\r
-import Control.Monad\r
-import Data.List\r
-\r
----\r
----\r
----\r
-\r
-data Direction = DirUp | DirLeft | DirRight | DirDown\r
-    deriving (Eq,Ord,Show,Read)\r
-\r
-directions = [DirUp,DirLeft,DirRight,DirDown]\r
-\r
-coordOffset DirUp = (-1,0)\r
-coordOffset DirLeft = (0,-1)\r
-coordOffset DirRight = (0,1)\r
-coordOffset DirDown = (1,0)\r
-\r
-move (r,c) d = (r+dr,c+dc) where (dr,dc) = coordOffset d\r
-\r
-sortPair (x,y) =\r
-    case compare x y of\r
-        EQ -> (x,y)\r
-        LT -> (x,y)\r
-        GT -> (y,x)\r
-mapPair12 f (x,y) = (f x,f y)\r
-\r
-cachedUsingList f = f'\r
-    where\r
-        list = map f [0..]\r
-        f' i = list !! i\r
-\r
-nubSorted [] = []\r
-nubSorted (x:xs) = nubSorted' x xs\r
-    where\r
-        nubSorted' x [] = [x]\r
-        nubSorted' x (y:ys)\r
-            | x == y  = nubSorted' x ys\r
-            | otherwise  = x : nubSorted' y ys\r
-\r
----\r
----\r
----\r
-\r
-size = 21\r
-largestExplicitlyEnumeratedArea = 7\r
-\r
-type Cell = (Int,Int)\r
-type Edge = (Cell,Cell)\r
-\r
-mkEdge cell1 cell2 = sortPair (cell1,cell2)\r
-\r
-cellsAround area = nubSorted $ sort $ \r
-    do\r
-        cell <- area\r
-        dir <- directions\r
-        let cell2 = move cell dir\r
-        guard $ cell2 `notElem` area\r
-        return $ cell2\r
-\r
-increaseAreas areas = nubSorted $ sort $ \r
-    do\r
-        area <- areas\r
-        cell2 <- cellsAround area\r
-        return $ sort $ cell2 : area\r
-getAreas :: Int -> [[Cell]]\r
-getAreasRaw 1 = [[(0,0)]]\r
-getAreasRaw n = areas\r
-    where\r
-        areas = increaseAreas $ getAreas $ n - 1\r
-getAreas = cachedUsingList getAreasRaw\r
-\r
-getEdges area = mapPair12 (map snd) $ partition fst $ nubSorted $ sort $ \r
-    do\r
-        cell <- area\r
-        dir <- directions\r
-        let cell2 = move cell dir\r
-        let isInternal = cell2 `elem` area\r
-        return (isInternal,mkEdge cell cell2)\r
-\r
-type SizedArea = (Int,((Set.Set Cell,Set.Set Cell),(Set.Set Edge,Set.Set Edge)))\r
-getExtendedAreas n = \r
-    do\r
-        area <- getAreas n\r
-        let areaAround = cellsAround area\r
-        let edgeInfo = getEdges area\r
-        return ((Set.fromList area,Set.fromList areaAround),mapPair12 Set.fromList edgeInfo)        \r
-\r
-getSizedAreasThrough :: Int -> [SizedArea]\r
-getSizedAreasThrough n = \r
-    do\r
-        n' <- [1 .. n]\r
-        extendedArea <- getExtendedAreas n'\r
-        return $ (n',extendedArea)\r
-\r
-sizeForSizedArea (asize,_) = asize\r
-allSizedAreas = getSizedAreasThrough largestExplicitlyEnumeratedArea\r
-\r
-main = print $ allSizedAreas\r
-\r
+module Main where
+
+import qualified Data.Set as Set
+import Control.Monad
+import Data.List
+
+---
+---
+---
+
+data Direction = DirUp | DirLeft | DirRight | DirDown
+    deriving (Eq,Ord,Show,Read)
+
+directions = [DirUp,DirLeft,DirRight,DirDown]
+
+coordOffset DirUp = (-1,0)
+coordOffset DirLeft = (0,-1)
+coordOffset DirRight = (0,1)
+coordOffset DirDown = (1,0)
+
+move (r,c) d = (r+dr,c+dc) where (dr,dc) = coordOffset d
+
+sortPair (x,y) =
+    case compare x y of
+        EQ -> (x,y)
+        LT -> (x,y)
+        GT -> (y,x)
+mapPair12 f (x,y) = (f x,f y)
+
+cachedUsingList f = f'
+    where
+        list = map f [0..]
+        f' i = list !! i
+
+nubSorted [] = []
+nubSorted (x:xs) = nubSorted' x xs
+    where
+        nubSorted' x [] = [x]
+        nubSorted' x (y:ys)
+            | x == y  = nubSorted' x ys
+            | otherwise  = x : nubSorted' y ys
+
+---
+---
+---
+
+size = 21
+largestExplicitlyEnumeratedArea = 7
+
+type Cell = (Int,Int)
+type Edge = (Cell,Cell)
+
+mkEdge cell1 cell2 = sortPair (cell1,cell2)
+
+cellsAround area = nubSorted $ sort $
+    do
+        cell <- area
+        dir <- directions
+        let cell2 = move cell dir
+        guard $ cell2 `notElem` area
+        return $ cell2
+
+increaseAreas areas = nubSorted $ sort $
+    do
+        area <- areas
+        cell2 <- cellsAround area
+        return $ sort $ cell2 : area
+getAreas :: Int -> [[Cell]]
+getAreasRaw 1 = [[(0,0)]]
+getAreasRaw n = areas
+    where
+        areas = increaseAreas $ getAreas $ n - 1
+getAreas = cachedUsingList getAreasRaw
+
+getEdges area = mapPair12 (map snd) $ partition fst $ nubSorted $ sort $
+    do
+        cell <- area
+        dir <- directions
+        let cell2 = move cell dir
+        let isInternal = cell2 `elem` area
+        return (isInternal,mkEdge cell cell2)
+
+type SizedArea = (Int,((Set.Set Cell,Set.Set Cell),(Set.Set Edge,Set.Set Edge)))
+getExtendedAreas n =
+    do
+        area <- getAreas n
+        let areaAround = cellsAround area
+        let edgeInfo = getEdges area
+        return ((Set.fromList area,Set.fromList areaAround),mapPair12 Set.fromList edgeInfo)
+
+getSizedAreasThrough :: Int -> [SizedArea]
+getSizedAreasThrough n =
+    do
+        n' <- [1 .. n]
+        extendedArea <- getExtendedAreas n'
+        return $ (n',extendedArea)
+
+sizeForSizedArea (asize,_) = asize
+allSizedAreas = getSizedAreasThrough largestExplicitlyEnumeratedArea
+
+main = print $ allSizedAreas
+
index dfebd05..7abff52 100644 (file)
@@ -1,15 +1,15 @@
-module Eta where\r
-\r
-data T = MkT \r
-newtype Foo = Foo T\r
-\r
-lift :: Foo -> T\r
-lift (Foo x) = bof x   \r
-  -- The point is that we expect \r
-  --   lift = bof |> co\r
-  -- not\r
-  --   lift = \fx -> bof (fx |> co)\r
-\r
-bof :: T -> T\r
-{-# NOINLINE bof #-}\r
-bof MkT = MkT\r
+module Eta where
+
+data T = MkT
+newtype Foo = Foo T
+
+lift :: Foo -> T
+lift (Foo x) = bof x
+  -- The point is that we expect
+  --   lift = bof |> co
+  -- not
+  --   lift = \fx -> bof (fx |> co)
+
+bof :: T -> T
+{-# NOINLINE bof #-}
+bof MkT = MkT
index ce3b452..f655652 100644 (file)
@@ -1,8 +1,8 @@
-module T5366 where\r
-\r
-newtype Id a = Id Int\r
-data Foo = Foo {-# UNPACK #-} !(Id Foo) String \r
-data Bar = Bar {-# UNPACK #-} !Foo\r
-\r
-f :: Bar -> Int\r
-f (Bar (Foo (Id x) _)) = x\r
+module T5366 where
+
+newtype Id a = Id Int
+data Foo = Foo {-# UNPACK #-} !(Id Foo) String
+data Bar = Bar {-# UNPACK #-} !Foo
+
+f :: Bar -> Int
+f (Bar (Foo (Id x) _)) = x
index 2768fb5..e4a07b1 100644 (file)
@@ -1,19 +1,19 @@
-{-# LANGUAGE MagicHash #-}\r
-module T7287 where\r
-\r
-import GHC.Prim\r
-\r
-{-# RULES\r
-  "int2Word#/word2Int#" forall x. int2Word# (word2Int# x) = x\r
-  #-}\r
-\r
-{- We get a legitmiate\r
-\r
-   T7287.hs:7:3: warning:\r
-       Rule int2Word#/word2Int# may never fire because\r
-         rule "word2Int#" for ‘word2Int#’ might fire first\r
-       Probable fix: add phase [n] or [~n] to the competing rule\r
-\r
-because rule "word2Int#" is the constant folding rule that converts\r
-a sufficiently-narrow Word# literal to an Int#.  There is a similar\r
-one for int2Word#, so the whole lot is confluent. -}
\ No newline at end of file
+{-# LANGUAGE MagicHash #-}
+module T7287 where
+
+import GHC.Prim
+
+{-# RULES
+  "int2Word#/word2Int#" forall x. int2Word# (word2Int# x) = x
+  #-}
+
+{- We get a legitmiate
+
+   T7287.hs:7:3: warning:
+       Rule int2Word#/word2Int# may never fire because
+         rule "word2Int#" for ‘word2Int#’ might fire first
+       Probable fix: add phase [n] or [~n] to the competing rule
+
+because rule "word2Int#" is the constant folding rule that converts
+a sufficiently-narrow Word# literal to an Int#.  There is a similar
+one for int2Word#, so the whole lot is confluent. -}
index 923f480..6894f82 100644 (file)
@@ -1,19 +1,19 @@
-\r
--- This one triggers the bug reported in Trac #1092\r
--- The problem is that the rule \r
---     forall w. f (\v->w) = w \r
--- erroneously matches the call\r
---     f id\r
---\r
--- Lint catches the error\r
-\r
-module Foo where\r
-\r
-f :: (Int -> Int) -> Int\r
-{-# NOINLINE f #-}\r
-f g = g 4\r
-{-# RULES \r
-  "f" forall w. f (\v->w) = w \r
- #-}\r
-\r
-h = f id\r
+
+-- This one triggers the bug reported in Trac #1092
+-- The problem is that the rule
+--      forall w. f (\v->w) = w
+-- erroneously matches the call
+--      f id
+--
+-- Lint catches the error
+
+module Foo where
+
+f :: (Int -> Int) -> Int
+{-# NOINLINE f #-}
+f g = g 4
+{-# RULES
+  "f" forall w. f (\v->w) = w
+ #-}
+
+h = f id
index 0ab113d..9dc10ad 100644 (file)
@@ -1,5 +1,5 @@
-module Main where\r
-\r
-import T5441a\r
-\r
-main = putStrLn (showNat Z)\r
+module Main where
+
+import T5441a
+
+main = putStrLn (showNat Z)
index 4c6668b..4a023d6 100644 (file)
@@ -1,39 +1,39 @@
-module T5441a where\r
-\r
-import Unsafe.Coerce (unsafeCoerce)\r
-import GHC.Prim (Any)\r
-\r
-listmap :: (a -> b) -> [a] -> [b]\r
-listmap f []       = []\r
-listmap f (x : xs) = f x : listmap f xs\r
-\r
-data Nat = Z | S Nat\r
-\r
-{-# NOINLINE inject #-}\r
-inject :: Nat -> Nat -> Nat\r
-inject m i = i\r
-\r
-{-# NOINLINE look #-}\r
-look :: Nat -> String -> Char\r
-look Z _ = '0'\r
-\r
-showDigit :: Nat -> () -> Nat -> Char\r
-showDigit base prf d = look (inject base d) ""\r
-\r
-toDigits :: Nat -> Nat -> [Nat]\r
-toDigits Z Z = [Z]\r
-\r
-coe1 :: (Nat -> String) -> Any\r
-coe1 = unsafeCoerce\r
-\r
-coe2 :: Any -> (Nat -> String)\r
-coe2 = unsafeCoerce\r
-\r
-showInBase :: Nat -> Any\r
-showInBase base\r
-  = coe1 (\n -> listmap\r
-                (showDigit base ())\r
-                (toDigits base n))\r
-\r
-showNat :: Nat -> String\r
-showNat = coe2 (showInBase Z)\r
+module T5441a where
+
+import Unsafe.Coerce (unsafeCoerce)
+import GHC.Prim (Any)
+
+listmap :: (a -> b) -> [a] -> [b]
+listmap f []       = []
+listmap f (x : xs) = f x : listmap f xs
+
+data Nat = Z | S Nat
+
+{-# NOINLINE inject #-}
+inject :: Nat -> Nat -> Nat
+inject m i = i
+
+{-# NOINLINE look #-}
+look :: Nat -> String -> Char
+look Z _ = '0'
+
+showDigit :: Nat -> () -> Nat -> Char
+showDigit base prf d = look (inject base d) ""
+
+toDigits :: Nat -> Nat -> [Nat]
+toDigits Z Z = [Z]
+
+coe1 :: (Nat -> String) -> Any
+coe1 = unsafeCoerce
+
+coe2 :: Any -> (Nat -> String)
+coe2 = unsafeCoerce
+
+showInBase :: Nat -> Any
+showInBase base
+  = coe1 (\n -> listmap
+                (showDigit base ())
+                (toDigits base n))
+
+showNat :: Nat -> String
+showNat = coe2 (showInBase Z)
index 62d2a13..58f16b1 100644 (file)
@@ -1,17 +1,17 @@
-module T8037 where\r
-\r
-import Unsafe.Coerce\r
-import Foreign.C.Types\r
-import System.IO.Unsafe\r
-\r
-data D4 = D4 CInt CInt CInt\r
-data Color3 = Color3 CInt CInt\r
-\r
-crash :: D4 -> IO ()\r
-crash x = color (unsafeCoerce x)\r
-\r
-color :: Color3 -> IO ()\r
-color (Color3 r g) = f (unsafePerformIO undefined) r g\r
-\r
-foreign import ccall f :: CInt -> CInt -> CInt -> IO ()\r
-\r
+module T8037 where
+
+import Unsafe.Coerce
+import Foreign.C.Types
+import System.IO.Unsafe
+
+data D4 = D4 CInt CInt CInt
+data Color3 = Color3 CInt CInt
+
+crash :: D4 -> IO ()
+crash x = color (unsafeCoerce x)
+
+color :: Color3 -> IO ()
+color (Color3 r g) = f (unsafePerformIO undefined) r g
+
+foreign import ccall f :: CInt -> CInt -> CInt -> IO ()
+
index 3d8c319..d403723 100644 (file)
@@ -1,8 +1,8 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
--- Test Trac #2597 (first bug)\r
-\r
-module ShouldCompile where\r
-import T2597a_Lib\r
-\r
-bug = $mkBug\r
+{-# LANGUAGE TemplateHaskell #-}
+
+-- Test Trac #2597 (first bug)
+
+module ShouldCompile where
+import T2597a_Lib
+
+bug = $mkBug
index 0e8f794..ad69ac2 100644 (file)
@@ -1,12 +1,12 @@
-{-# LANGUAGE TemplateHaskell #-}\r
--- Library module for T2597a\r
-\r
-module T2597a_Lib where\r
-import Language.Haskell.TH\r
-\r
-\r
-mkBug :: ExpQ\r
-mkBug = return $ CompE [BindS (VarP $ mkName "p") (ListE []), NoBindS\r
-                        (VarE $ mkName "p")]\r
-\r
-\r
+{-# LANGUAGE TemplateHaskell #-}
+-- Library module for T2597a
+
+module T2597a_Lib where
+import Language.Haskell.TH
+
+
+mkBug :: ExpQ
+mkBug = return $ CompE [BindS (VarP $ mkName "p") (ListE []), NoBindS
+                         (VarE $ mkName "p")]
+
+
index 2fde008..0e1551e 100644 (file)
@@ -1,9 +1,9 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
--- Test Trac #2597 (second bug)\r
-\r
-module ShouldCompile where\r
-import T2597b_Lib\r
-\r
-bug2 = $mkBug2\r
-\r
+{-# LANGUAGE TemplateHaskell #-}
+
+-- Test Trac #2597 (second bug)
+
+module ShouldCompile where
+import T2597b_Lib
+
+bug2 = $mkBug2
+
index 1f70c39..395166b 100644 (file)
@@ -1,9 +1,9 @@
-{-# LANGUAGE TemplateHaskell #-}\r
--- Library module for T2597b\r
-\r
-module T2597b_Lib where\r
-import Language.Haskell.TH\r
-\r
-\r
-mkBug2 :: ExpQ\r
-mkBug2 = return $ DoE []\r
+{-# LANGUAGE TemplateHaskell #-}
+-- Library module for T2597b
+
+module T2597b_Lib where
+import Language.Haskell.TH
+
+
+mkBug2 :: ExpQ
+mkBug2 = return $ DoE []
index 68a6e62..12dc3f0 100644 (file)
@@ -1,10 +1,10 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
-module T2700 where\r
-import Language.Haskell.TH\r
-import System.IO\r
-\r
-$( do { d <- sigD (mkName "foo") [t| (Int -> Bool) -> Bool |]\r
-      ; runIO (hPutStrLn stderr (pprint d))\r
-      ; return [] }\r
-  )\r
+{-# LANGUAGE TemplateHaskell #-}
+
+module T2700 where
+import Language.Haskell.TH
+import System.IO
+
+$( do { d <- sigD (mkName "foo") [t| (Int -> Bool) -> Bool |]
+      ; runIO (hPutStrLn stderr (pprint d))
+      ; return [] }
+  )
index 980d499..be93eb4 100644 (file)
@@ -1,12 +1,12 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-module Fixity where\r
-\r
-class MyClass a where\r
-    (.*.) :: a -> a -> a\r
-\r
-f x = x\r
-\r
-$( [d| x = undefined |] )\r
-\r
-infixr 3 .*.\r
-f :: Int -> Int\r
+{-# LANGUAGE TemplateHaskell #-}
+module Fixity where
+
+class MyClass a where
+    (.*.) :: a -> a -> a
+
+f x = x
+
+$( [d| x = undefined |] )
+
+infixr 3 .*.
+f :: Int -> Int
index ff3ee43..20ca4f7 100644 (file)
@@ -1,9 +1,9 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-module T3395 where\r
-\r
-import Language.Haskell.TH\r
-\r
-foo = $(return $\r
-     CompE\r
-         [NoBindS (VarE $ mkName "undefined")\r
-         ,BindS (VarP $ mkName "r1") (VarE $ mkName "undefined") ])\r
+{-# LANGUAGE TemplateHaskell #-}
+module T3395 where
+
+import Language.Haskell.TH
+
+foo = $(return $
+     CompE
+         [NoBindS (VarE $ mkName "undefined")
+         ,BindS (VarP $ mkName "r1") (VarE $ mkName "undefined") ])
index b439470..cf495b9 100644 (file)
@@ -1,11 +1,11 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
--- Test Trac #3467\r
-\r
-module T3467 where\r
-\r
-import Language.Haskell.TH\r
-import Foreign\r
-\r
-sizeq :: Name -> Q Exp\r
-sizeq n = [| sizeOf (undefined :: $(conT n)) |]\r
+{-# LANGUAGE TemplateHaskell #-}
+
+-- Test Trac #3467
+
+module T3467 where
+
+import Language.Haskell.TH
+import Foreign
+
+sizeq :: Name -> Q Exp
+sizeq n = [| sizeOf (undefined :: $(conT n)) |]
index 18f21d6..8868339 100644 (file)
@@ -1,12 +1,12 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
-module T5404 where\r
-\r
-foobar :: Int\r
-foobar = $([|\r
-      let\r
-        bar :: Int\r
-        bar = 5\r
-      in bar\r
-   |])\r
-\r
+{-# LANGUAGE TemplateHaskell #-}
+
+module T5404 where
+
+foobar :: Int
+foobar = $([|
+      let
+        bar :: Int
+        bar = 5
+      in bar
+   |])
+
index da9e51a..a43ac17 100644 (file)
@@ -1,8 +1,8 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-module Main where\r
-\r
-$([d| instance Show (a -> b) where\r
-         showsPrec _ _ = showString "<function>"\r
-  |])\r
-\r
-main = print id
\ No newline at end of file
+{-# LANGUAGE TemplateHaskell #-}
+module Main where
+
+$([d| instance Show (a -> b) where
+         showsPrec _ _ = showString "<function>"
+  |])
+
+main = print id
index 2434e43..ae6f43e 100644 (file)
@@ -1,9 +1,9 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
-module T5665 where\r
-\r
-import T5665a\r
-\r
-data Record = Record { recordField :: Int }\r
-\r
-$(doSomeTH "SomeType" ''Int)\r
+{-# LANGUAGE TemplateHaskell #-}
+
+module T5665 where
+
+import T5665a
+
+data Record = Record { recordField :: Int }
+
+$(doSomeTH "SomeType" ''Int)
index 1458c78..1b97b2d 100644 (file)
@@ -1,5 +1,5 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-module T5737 where\r
-\r
-import Language.Haskell.TH\r
-makeAlpha n = [d| data Alpha = Alpha $(conT n) deriving (Show, Read) |]  \r
+{-# LANGUAGE TemplateHaskell #-}
+module T5737 where
+
+import Language.Haskell.TH
+makeAlpha n = [d| data Alpha = Alpha $(conT n) deriving (Show, Read) |]
index 4aa3081..521c729 100644 (file)
@@ -1,15 +1,15 @@
-{-# LANGUAGE TemplateHaskell, MagicHash, UnboxedTuples #-}\r
-\r
-module T8954 where\r
-\r
-import Language.Haskell.TH\r
-\r
-$( do _ <- reify '(##)\r
-      _ <- reify '(#,#)\r
-      _ <- reify ''(##)\r
-      _ <- reify ''(#,#)\r
-      _ <- reify '()\r
-      _ <- reify ''()\r
-      _ <- reify '[]\r
-      _ <- reify ''[]\r
-      return [] )\r
+{-# LANGUAGE TemplateHaskell, MagicHash, UnboxedTuples #-}
+
+module T8954 where
+
+import Language.Haskell.TH
+
+$( do _ <- reify '(##)
+      _ <- reify '(#,#)
+      _ <- reify ''(##)
+      _ <- reify ''(#,#)
+      _ <- reify '()
+      _ <- reify ''()
+      _ <- reify '[]
+      _ <- reify ''[]
+      return [] )
index 3674a5a..ea1a119 100644 (file)
@@ -1,15 +1,15 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-\r
--- Trac #2358\r
-\r
-module ShouldFail where\r
-import Language.Haskell.TH\r
-\r
-x = $(sigE [|1|] (tupleT 1 `appT` conT ''Int)) \r
-       -- 1 :: (Int)   ( a 1-tuple type)\r
-\r
-y = $(sigE [|1|] (tupleT 1))\r
-       -- 1 :: (1)     (a 1-tuple tycon not applied)\r
-\r
-z = $(tupE [ [| "yes" |] ])\r
-       -- ("yes")      (a 1-tuple expression)\r
+{-# LANGUAGE TemplateHaskell #-}
+
+-- Trac #2358
+
+module ShouldFail where
+import Language.Haskell.TH
+
+x = $(sigE [|1|] (tupleT 1 `appT` conT ''Int))
+        -- 1 :: (Int)   ( a 1-tuple type)
+
+y = $(sigE [|1|] (tupleT 1))
+        -- 1 :: (1)     (a 1-tuple tycon not applied)
+
+z = $(tupE [ [| "yes" |] ])
+        -- ("yes")      (a 1-tuple expression)
index e16e6da..1af80db 100644 (file)
@@ -1,31 +1,31 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-module TH_NestedSplices where\r
-\r
-import Language.Haskell.TH\r
-\r
-import TH_NestedSplices_Lib \r
--- This import brings in\r
---   spliceExpr :: String -> Q Exp -> Q Exp\r
---   declareFun :: String -> Q [Dec]\r
-\r
--- Top level splice without $\r
-declareFun "a" \r
-\r
--- Splice inside splice\r
-$(declareFun $(stringE "b"))\r
-\r
--- Splice inside splice without outer $\r
-declareFun $(stringE "c")\r
-\r
--- Ordinary splicing\r
-f x = $(spliceExpr "boo" [| x |])\r
-\r
--- Splice inside splice\r
-g x = $(spliceExpr $(litE (stringL "boo")) [| x |])\r
-\r
--- Ordinary splice inside bracket\r
-h1 = [| $(litE (integerL 3)) |]\r
-\r
--- Splice inside splice inside bracket\r
-h2 = [| $(litE ($(varE 'integerL) 3)) |]\r
-\r
+{-# LANGUAGE TemplateHaskell #-}
+module TH_NestedSplices where
+
+import Language.Haskell.TH
+
+import TH_NestedSplices_Lib
+-- This import brings in
+--   spliceExpr :: String -> Q Exp -> Q Exp
+--   declareFun :: String -> Q [Dec]
+
+-- Top level splice without $
+declareFun "a"
+
+-- Splice inside splice
+$(declareFun $(stringE "b"))
+
+-- Splice inside splice without outer $
+declareFun $(stringE "c")
+
+-- Ordinary splicing
+f x = $(spliceExpr "boo" [| x |])
+
+-- Splice inside splice
+g x = $(spliceExpr $(litE (stringL "boo")) [| x |])
+
+-- Ordinary splice inside bracket
+h1 = [| $(litE (integerL 3)) |]
+
+-- Splice inside splice inside bracket
+h2 = [| $(litE ($(varE 'integerL) 3)) |]
+
index 91d6173..f6435df 100644 (file)
@@ -1,14 +1,14 @@
-{-# LANGUAGE TemplateHaskell #-}\r
-module TH_NestedSplices_Lib where\r
-\r
-import Language.Haskell.TH\r
-\r
-spliceExpr :: String -> Q Exp -> Q Exp\r
-spliceExpr s e = [| (s, $e) |]\r
-\r
-declareFun :: String -> Q [Dec]\r
-declareFun s\r
-  = do { n <- newName s\r
-       ; d <- funD n [clause [] (normalB [| 22 |]) []]\r
-       ; return [d] }\r
-\r
+{-# LANGUAGE TemplateHaskell #-}
+module TH_NestedSplices_Lib where
+
+import Language.Haskell.TH
+
+spliceExpr :: String -> Q Exp -> Q Exp
+spliceExpr s e = [| (s, $e) |]
+
+declareFun :: String -> Q [Dec]
+declareFun s
+  = do { n <- newName s
+       ; d <- funD n [clause [] (normalB [| 22 |]) []]
+       ; return [d] }
+
index b4623a8..571d2da 100644 (file)
@@ -1,26 +1,26 @@
-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}\r
-{-# LANGUAGE ScopedTypeVariables, FlexibleContexts #-}\r
-\r
--- Trac #1783\r
--- Like Trac #1781 you could argue that this one should succeed\r
--- but we stick with the old behaviour for now.  When we do \r
--- fundeps properly it'll probably start to work\r
-\r
-module ShouldCompile where\r
-\r
-import Prelude hiding (foldr, foldr1)\r
-\r
-import Data.Maybe\r
-\r
-class Elem a e | a -> e\r
-\r
-class Foldable a where\r
-  foldr :: Elem a e => (e -> b -> b) -> b -> a -> b\r
-\r
---  foldr1 :: forall e. Elem a e => (e -> e -> e) -> a -> e  -- WORKS!\r
-  foldr1 :: Elem a e => (e -> e -> e) -> a -> e\r
-  foldr1 f xs = fromMaybe (error "foldr1: empty structure")\r
-                  (foldr mf Nothing xs)\r
-     where mf :: Elem a e => (e -> Maybe e -> Maybe e)\r
-           mf x Nothing  = Just x\r
-           mf x (Just y) = Just (f x y)\r
+{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
+{-# LANGUAGE ScopedTypeVariables, FlexibleContexts #-}
+
+-- Trac #1783
+-- Like Trac #1781 you could argue that this one should succeed
+-- but we stick with the old behaviour for now.  When we do
+-- fundeps properly it'll probably start to work
+
+module ShouldCompile where
+
+import Prelude hiding (foldr, foldr1)
+
+import Data.Maybe
+
+class Elem a e | a -> e
+
+class Foldable a where
+  foldr :: Elem a e => (e -> b -> b) -> b -> a -> b
+
+--  foldr1 :: forall e. Elem a e => (e -> e -> e) -> a -> e  -- WORKS!
+  foldr1 :: Elem a e => (e -> e -> e) -> a -> e
+  foldr1 f xs = fromMaybe (error "foldr1: empty structure")
+                  (foldr mf Nothing xs)
+     where mf :: Elem a e => (e -> Maybe e -> Maybe e)
+           mf x Nothing  = Just x
+           mf x (Just y) = Just (f x y)
index dcf25f7..5165032 100644 (file)
@@ -1,27 +1,27 @@
-{-# LANGUAGE\r
-    MultiParamTypeClasses,\r
-    FunctionalDependencies,\r
-    UndecidableInstances,\r
-    FlexibleInstances,\r
-    EmptyDataDecls #-}\r
-\r
--- Trac #1797\r
-\r
-module ShouldCompile where\r
-\r
-data True\r
-\r
-data False\r
-\r
-class TypeEq type1 type2 result | type1 type2 -> result where\r
-    typeEq :: type1 -> type2 -> result\r
-\r
-instance TypeEq soleType soleType True where\r
-    typeEq _ _ = undefined\r
-\r
-instance (TypeCast False result) => TypeEq type1 type2 result where\r
-    typeEq _ _ = undefined\r
-\r
-class TypeCast type1 type2 | type1 -> type2, type2 -> type1\r
-\r
-instance TypeCast soleType soleType\r
+{-# LANGUAGE
+    MultiParamTypeClasses,
+    FunctionalDependencies,
+    UndecidableInstances,
+    FlexibleInstances,
+    EmptyDataDecls #-}
+
+-- Trac #1797
+
+module ShouldCompile where
+
+data True
+
+data False
+
+class TypeEq type1 type2 result | type1 type2 -> result where
+    typeEq :: type1 -> type2 -> result
+
+instance TypeEq soleType soleType True where
+    typeEq _ _ = undefined
+
+instance (TypeCast False result) => TypeEq type1 type2 result where
+    typeEq _ _ = undefined
+
+class TypeCast type1 type2 | type1 -> type2, type2 -> type1
+
+instance TypeCast soleType soleType
index 918eb78..2ac5375 100644 (file)
@@ -1,14 +1,14 @@
-{-# LANGUAGE TypeFamilies #-}\r
-module Main where \r
-\r
-data A a\r
-\r
-type T a = A a\r
-\r
-\r
-f :: (A a ~ T Int) => a -> Int \r
-f x = x \r
-\r
-\r
-main :: IO ()\r
-main = return ()
\ No newline at end of file
+{-# LANGUAGE TypeFamilies #-}
+module Main where
+
+data A a
+
+type T a = A a
+
+
+f :: (A a ~ T Int) => a -> Int
+f x = x
+
+
+main :: IO ()
+main = return ()
index 1890559..0360749 100644 (file)
@@ -1,10 +1,10 @@
- {-# LANGUAGE RankNTypes, ScopedTypeVariables #-}\r
-\r
--- Trac #2572\r
-\r
-module Foo where\r
-\r
-type GTypeFun = forall a . a -> ()\r
-\r
-gmapType :: Int -> GTypeFun\r
-gmapType _ (_ :: a) = undefined\r
+ {-# LANGUAGE RankNTypes, ScopedTypeVariables #-}
+
+-- Trac #2572
+
+module Foo where
+
+type GTypeFun = forall a . a -> ()
+
+gmapType :: Int -> GTypeFun
+gmapType _ (_ :: a) = undefined
index 6fe95c4..0310be0 100644 (file)
@@ -1,12 +1,12 @@
-{-# LANGUAGE ImplicitParams #-}\r
-{-# LANGUAGE TypeFamilies #-}\r
-{-# LANGUAGE NoMonomorphismRestriction #-}\r
-\r
-module Test where\r
-\r
-class C t where\r
-    type TF t\r
-    ttt :: TF t -> t\r
-\r
-b :: (C t, ?x :: TF t) => t\r
-b = ttt ?x \r
+{-# LANGUAGE ImplicitParams #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoMonomorphismRestriction #-}
+
+module Test where
+
+class C t where
+    type TF t
+    ttt :: TF t -> t
+
+b :: (C t, ?x :: TF t) => t
+b = ttt ?x
index e7599cf..d9f9e13 100644 (file)
@@ -1,14 +1,14 @@
-{-# LANGUAGE UnicodeSyntax, RankNTypes, TypeFamilies #-}\r
-module T5595 where\r
-\r
-class MonadTransControl t where\r
-  type St t :: * → *\r
-\r
-  liftControl :: Monad m =>(Run t → m a) → t m a\r
-\r
-  restore :: Monad o => St t y → t o y\r
-\r
-type Run t = forall n b. Monad n => t n b → n (St t b)\r
-\r
-foo :: (Monad m, MonadTransControl t) => (Run t -> m a) -> t m a\r
-foo f = liftControl f\r
+{-# LANGUAGE UnicodeSyntax, RankNTypes, TypeFamilies #-}
+module T5595 where
+
+class MonadTransControl t where
+  type St t :: * → *
+
+  liftControl :: Monad m =>(Run t → m a) → t m a
+
+  restore :: Monad o => St t y → t o y
+
+type Run t = forall n b. Monad n => t n b → n (St t b)
+
+foo :: (Monad m, MonadTransControl t) => (Run t -> m a) -> t m a
+foo f = liftControl f
index 0420c04..3119296 100644 (file)
@@ -1,11 +1,11 @@
-{-# LANGUAGE MonoLocalBinds, NoMonomorphismRestriction, RankNTypes #-}\r
-module T7268 where\r
-\r
-data X = X { a :: forall a . a -> Bool }\r
-\r
-ida :: forall b. b -> Bool\r
-X { a = ida } = error "urk"\r
-\r
-bar :: c -> Bool\r
-bar = ida\r
-\r
+{-# LANGUAGE MonoLocalBinds, NoMonomorphismRestriction, RankNTypes #-}
+module T7268 where
+
+data X = X { a :: forall a . a -> Bool }
+
+ida :: forall b. b -> Bool
+X { a = ida } = error "urk"
+
+bar :: c -> Bool
+bar = ida
+
index 1d81144..d717b47 100644 (file)
@@ -1,11 +1,11 @@
-{-# LANGUAGE FunctionalDependencies, PolyKinds #-}\r
-\r
-module T7384 where\r
-\r
-class Baz a b | a -> b where\r
-   bar :: a -> ()\r
-\r
-instance Baz Bool Bool where\r
-   bar _ = ()\r
-\r
-foo = bar False\r
+{-# LANGUAGE FunctionalDependencies, PolyKinds #-}
+
+module T7384 where
+
+class Baz a b | a -> b where
+   bar :: a -> ()
+
+instance Baz Bool Bool where
+   bar _ = ()
+
+foo = bar False
index 1930f0b..de97927 100644 (file)
@@ -1,15 +1,15 @@
-{-# LANGUAGE RankNTypes, MagicHash #-}\r
-\r
-module T7888 where\r
-import GHC.Err( undefined )\r
-import GHC.Prim\r
-\r
-{- The fix for #11431 makes this no longer work. But it shouldn't really,\r
-without impredicativity.\r
-f :: (forall a. a) -> b\r
-f = undefined\r
--}\r
-\r
--- this still had better work, though!\r
-g :: Int -> Int#\r
-g _ = undefined\r
+{-# LANGUAGE RankNTypes, MagicHash #-}
+
+module T7888 where
+import GHC.Err( undefined )
+import GHC.Prim
+
+{- The fix for #11431 makes this no longer work. But it shouldn't really,
+without impredicativity.
+f :: (forall a. a) -> b
+f = undefined
+-}
+
+-- this still had better work, though!
+g :: Int -> Int#
+g _ = undefined
index 8ad56c6..3dd9f7b 100644 (file)
@@ -1,33 +1,33 @@
-{-# LANGUAGE RankNTypes #-}\r
-\r
--- A classic test for type inference\r
--- Taken from "Haskell and principal types", Section 3\r
--- by Faxen, in the Haskell Workshop 2003, pp88-97\r
-\r
-module ShouldCompile where\r
-\r
-import GHC.List (null)\r
-import Prelude hiding (null)\r
-\r
-class HasEmpty a where\r
-  isEmpty :: a -> Bool\r
-\r
-instance HasEmpty [a] where\r
-  isEmpty x = null x\r
-\r
-instance HasEmpty (Maybe a) where\r
-  isEmpty Nothing  = True\r
-  isEmpty (Just x) = False\r
-\r
-test1 y \r
-  =  (null y)\r
-  || (let f :: forall d. d -> Bool\r
-         f x = isEmpty (y >> return x)\r
-      in f y)\r
-\r
-test2 y \r
-  =  (let f :: forall d. d -> Bool\r
-         f x = isEmpty (y >> return x)\r
-      in f y)\r
-  || (null y)\r
-\r
+{-# LANGUAGE RankNTypes #-}
+
+-- A classic test for type inference
+-- Taken from "Haskell and principal types", Section 3
+-- by Faxen, in the Haskell Workshop 2003, pp88-97
+
+module ShouldCompile where
+
+import GHC.List (null)
+import Prelude hiding (null)
+
+class HasEmpty a where
+  isEmpty :: a -> Bool
+
+instance HasEmpty [a] where
+  isEmpty x = null x
+
+instance HasEmpty (Maybe a) where
+  isEmpty Nothing  = True
+  isEmpty (Just x) = False
+
+test1 y
+  =  (null y)
+  || (let f :: forall d. d -> Bool
+          f x = isEmpty (y >> return x)
+      in f y)
+
+test2 y
+  =  (let f :: forall d. d -> Bool
+          f x = isEmpty (y >> return x)
+      in f y)
+  || (null y)
+
index 97413c7..366a487 100644 (file)
@@ -1,11 +1,11 @@
 {-# LANGUAGE CPP, KindSignatures #-}
-\r
--- The record update triggered a kind error in GHC 6.2\r
-\r
-module Foo where\r
-\r
-data HT (ref :: * -> *)\r
-  = HT { kcount :: Int }\r
-\r
-set_kcount :: Int -> HT s -> HT s\r
-set_kcount kc ht = ht{kcount=kc}\r
+
+-- The record update triggered a kind error in GHC 6.2
+
+module Foo where
+
+data HT (ref :: * -> *)
+  = HT { kcount :: Int }
+
+set_kcount :: Int -> HT s -> HT s
+set_kcount kc ht = ht{kcount=kc}
index 4d43092..b138ed1 100644 (file)
@@ -1,14 +1,14 @@
--- Checks that the types of the old binder and the binder implicitly introduced by grouping are linked\r
-\r
-{-# OPTIONS_GHC -XTransformListComp #-}\r
-\r
-module ShouldCompile where\r
-\r
-import Data.List(inits)\r
-\r
-foo :: [[[Int]]]\r
-foo = [ x\r
-      | x <- [1..10]\r
-      , then group using inits\r
-      , then group using inits\r
-      ]
\ No newline at end of file
+-- Checks that the types of the old binder and the binder implicitly introduced by grouping are linked
+
+{-# OPTIONS_GHC -XTransformListComp #-}
+
+module ShouldCompile where
+
+import Data.List(inits)
+
+foo :: [[[Int]]]
+foo = [ x
+      | x <- [1..10]
+      , then group using inits
+      , then group using inits
+      ]
index 55c23f9..0f017a0 100644 (file)
@@ -1,17 +1,17 @@
-{-# LANGUAGE EmptyDataDecls, KindSignatures #-}\r
-\r
-module ShouldCompile where\r
-\r
--- Various forms of empty data type declarations\r
-\r
-data T1\r
-\r
-data T2 where\r
-\r
-data T3 :: * -> *\r
-\r
-data T4 a :: * -> *\r
-\r
-data T5 a :: * -> * where\r
-\r
-\r
+{-# LANGUAGE EmptyDataDecls, KindSignatures #-}
+
+module ShouldCompile where
+
+-- Various forms of empty data type declarations
+
+data T1
+
+data T2 where
+
+data T3 :: * -> *
+
+data T4 a :: * -> *
+
+data T5 a :: * -> * where
+
+
index 505eddc..054e513 100644 (file)
@@ -1,27 +1,27 @@
-{-# LANGUAGE FlexibleContexts #-}\r
-\r
-module FailDueToGivenOverlapping where\r
-\r
-class C a where\r
-\r
-class D a where \r
- dop :: a -> ()\r
-\r
-\r
-instance C a => D [a] \r
-\r
--- should succeed since we can't learn anything more for 'a'\r
-foo :: (C a, D [Int]) => a -> () \r
-foo x = dop [x] \r
-\r
-\r
-class E a where \r
- eop :: a -> () \r
-\r
-instance E [a] where \r
- eop = undefined\r
-\r
--- should fail since we can never be sure that we learnt \r
--- everything about the free unification variable.\r
-bar :: E [Int] => () -> ()\r
-bar _ = eop [undefined]\r
+{-# LANGUAGE FlexibleContexts #-}
+
+module FailDueToGivenOverlapping where
+
+class C a where
+
+class D a where
+ dop :: a -> ()
+
+
+instance C a => D [a]
+
+-- should succeed since we can't learn anything more for 'a'
+foo :: (C a, D [Int]) => a -> ()
+foo x = dop [x]
+
+
+class E a where
+ eop :: a -> ()
+
+instance E [a] where
+ eop = undefined
+
+-- should fail since we can never be sure that we learnt
+-- everything about the free unification variable.
+bar :: E [Int] => () -> ()
+bar _ = eop [undefined]
index 663143c..2d5db86 100644 (file)
@@ -1,43 +1,43 @@
-{-# LANGUAGE TypeFamilies, MultiParamTypeClasses\r
-  , FlexibleContexts, FlexibleInstances, UndecidableInstances\r
-  , TypeSynonymInstances, GeneralizedNewtypeDeriving\r
-  #-}\r
-\r
-module LongWayOverlapping where\r
-\r
-\r
-class M a where \r
-\r
-class M a => XMLG a \r
-\r
-instance M [a] \r
-\r
-instance XMLG [m] where     -- Generates an implication wanted:  forall m. M [m]\r
-\r
-class M a => EmbAsChild a b where \r
-  emb :: b -> [a]\r
-\r
-\r
-instance EmbAsChild [Char] Bool where \r
-  emb _ = emb 'c'\r
-\r
-\r
-  -- This one generates an unsolvable EmbAsChild [Char] Char\r
-\r
--- Original problem is: \r
--- [w] EmbAsChild [Char] Char \r
--- [w] forall m. M [m]\r
--- Now, by converting the wanted to given and pushing it inside the implication \r
--- we have the following:\r
--- [g] EmbAsChild [Char] Char \r
--- [g] M [Char]   <~~ The superclass of the first given! \r
--- [w] M [m] \r
--- And now OOPS we can't solve M [m] because we are supposed to delay our choice \r
--- as much as possible! \r
-\r
--- DV:\r
--- One possible solution is to STOP PUSHING wanteds as givens inside an implication\r
--- in a checking context. I think it's the best thing to do and I've implemented it.\r
-\r
--- In inference mode that's ok and the error message is very comprehensible, see\r
--- test case PushedInFlatsOverlap.hs \r
+{-# LANGUAGE TypeFamilies, MultiParamTypeClasses
+  , FlexibleContexts, FlexibleInstances, UndecidableInstances
+  , TypeSynonymInstances, GeneralizedNewtypeDeriving
+  #-}
+
+module LongWayOverlapping where
+
+
+class M a where
+
+class M a => XMLG a
+
+instance M [a]
+
+instance XMLG [m] where     -- Generates an implication wanted:  forall m. M [m]
+
+class M a => EmbAsChild a b where
+  emb :: b -> [a]
+
+
+instance EmbAsChild [Char] Bool where
+  emb _ = emb 'c'
+
+
+  -- This one generates an unsolvable EmbAsChild [Char] Char
+
+-- Original problem is:
+-- [w] EmbAsChild [Char] Char
+-- [w] forall m. M [m]
+-- Now, by converting the wanted to given and pushing it inside the implication
+-- we have the following:
+-- [g] EmbAsChild [Char] Char
+-- [g] M [Char]   <~~ The superclass of the first given!
+-- [w] M [m]
+-- And now OOPS we can't solve M [m] because we are supposed to delay our choice
+-- as much as possible!
+
+-- DV:
+-- One possible solution is to STOP PUSHING wanteds as givens inside an implication
+-- in a checking context. I think it's the best thing to do and I've implemented it.
+
+-- In inference mode that's ok and the error message is very comprehensible, see
+-- test case PushedInFlatsOverlap.hs
index f3f6a20..2328479 100644 (file)
@@ -1,55 +1,55 @@
-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}\r
-\r
--- This is a superclass loop test\r
--- It should fail with a type error, but\r
--- it's all too easy to succeed with a bogus recursive dictionary\r
-\r
-module SCLoop where\r
-\r
-class SC a where \r
-  f :: a -> ()\r
-\r
-class SC a => A a b where \r
-  op :: a -> b -> ()\r
-  op x _ = f x\r
-\r
-instance A a b => A a [b]\r
--- dfun1 :: \d::(A a b) -> DA (sc d)\r
-\r
-instance SC a  => A a (Maybe b)\r
--- dfun2 :: \d::SC a -> DA d\r
-\r
-foo = op () ([Just True])\r
-\r
-{- Here is the explanation: \r
-~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
-\r
-[Wanted]  d1 : (A () [Maybe Bool])\r
-~~~>                              d1 := dfun1 d2 \r
-[Wanted]  d2 : (A () (Maybe Bool))\r
-~~~>                              d2 := dfun2 d3 \r
-[Wanted]  d3 : SC ()\r
-[Derived] d4 : SC ()               d4 := sc d1\r
-~~~> \r
-      d3 := sc d1\r
-      isGoodRecEv will check: \r
-                  d3 == sc d1 \r
-                     == sc (dfun1 d2) \r
-                     == sc (dfun1 (dfun2 d3) ==> PASSES!   (gravity = 1)\r
-        This is BAD BAD BAD, because we get a loop\r
-\r
-      If we had inlined the definitions:\r
-                  d3 == sc d1 \r
-                     == sc (DA (sc d2))\r
-                     == sc (DA (sc (DA d3))) ==> DOES NOT! (gravity = 0)\r
-\r
-We should get "No instance for SC ()"\r
--}\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
+
+-- This is a superclass loop test
+-- It should fail with a type error, but
+-- it's all too easy to succeed with a bogus recursive dictionary
+
+module SCLoop where
+
+class SC a where
+  f :: a -> ()
+
+class SC a => A a b where
+  op :: a -> b -> ()
+  op x _ = f x
+
+instance A a b => A a [b]
+-- dfun1 :: \d::(A a b) -> DA (sc d)
+
+instance SC a  => A a (Maybe b)
+-- dfun2 :: \d::SC a -> DA d
+
+foo = op () ([Just True])
+
+{- Here is the explanation:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[Wanted]  d1 : (A () [Maybe Bool])
+~~~>                              d1 := dfun1 d2
+[Wanted]  d2 : (A () (Maybe Bool))
+~~~>                              d2 := dfun2 d3
+[Wanted]  d3 : SC ()
+[Derived] d4 : SC ()               d4 := sc d1
+~~~>
+      d3 := sc d1
+      isGoodRecEv will check:
+                  d3 == sc d1
+                     == sc (dfun1 d2)
+                     == sc (dfun1 (dfun2 d3) ==> PASSES!   (gravity = 1)
+        This is BAD BAD BAD, because we get a loop
+
+      If we had inlined the definitions:
+                  d3 == sc d1
+                     == sc (DA (sc d2))
+                     == sc (DA (sc (DA d3))) ==> DOES NOT! (gravity = 0)
+
+We should get "No instance for SC ()"
+-}
+
+
+
+
+
+
+
+
index 4ef3037..0720565 100644 (file)
@@ -1,5 +1,5 @@
--- Trac #2126\r
-\r
-module Foo where\r
-\r
-newtype X\r
+-- Trac #2126
+
+module Foo where
+
+newtype X
index b27acb7..b5e8d9c 100644 (file)
@@ -1,26 +1,26 @@
-{-# LANGUAGE ScopedTypeVariables, RankNTypes #-}\r
-\r
--- Trac #2714\r
-\r
-module T2714 where\r
-\r
-f :: ((a -> b) -> b) -> (forall c. c -> a)\r
-f = ffmap\r
-\r
-ffmap :: Functor f => (p->q) -> f p -> f q\r
-ffmap = error "urk"\r
-\r
-{-\r
-   a ~ f q\r
-   c ~ f p\r
-   (p->q) ~ (a->b) -> b\r
-\r
- =>\r
-   a ~ f q\r
-   c ~ f p\r
-   p ~ a->b\r
-   q ~ b\r
- =>\r
-   a ~ f b\r
-   c ~ f (a->b)\r
--}
\ No newline at end of file
+{-# LANGUAGE ScopedTypeVariables, RankNTypes #-}
+
+-- Trac #2714
+
+module T2714 where
+
+f :: ((a -> b) -> b) -> (forall c. c -> a)
+f = ffmap
+
+ffmap :: Functor f => (p->q) -> f p -> f q
+ffmap = error "urk"
+
+{-
+   a ~ f q
+   c ~ f p
+   (p->q) ~ (a->b) -> b
+
+ =>
+   a ~ f q
+   c ~ f p
+   p ~ a->b
+   q ~ b
+ =>
+   a ~ f b
+   c ~ f (a->b)
+-}
index 3337f3b..e31a32a 100644 (file)
@@ -1,11 +1,11 @@
-{-# LANGUAGE ScopedTypeVariables #-}\r
-\r
--- Trac #3406\r
--- A pattern signature that discards the bound variables\r
-\r
-module T3406 where\r
-\r
-type ItemColID a b = Int  -- Discards a,b\r
-\r
-get :: ItemColID a b -> a -> ItemColID a b\r
-get (x :: ItemColID a b) = x :: ItemColID a b
\ No newline at end of file
+{-# LANGUAGE ScopedTypeVariables #-}
+
+-- Trac #3406
+-- A pattern signature that discards the bound variables
+
+module T3406 where
+
+type ItemColID a b = Int  -- Discards a,b
+
+get :: ItemColID a b -> a -> ItemColID a b
+get (x :: ItemColID a b) = x :: ItemColID a b
index de32ed8..b948b88 100644 (file)
@@ -1,12 +1,12 @@
-{-# LANGUAGE RankNTypes #-}\r
-\r
-module T3592 where\r
-\r
-type T a = Show a => a\r
-\r
-f :: T a -> String\r
-f = show\r
-\r
-g :: T a -> String\r
-g x = show x\r
-\r
+{-# LANGUAGE RankNTypes #-}
+
+module T3592 where
+
+type T a = Show a => a
+
+f :: T a -> String
+f = show
+
+g :: T a -> String
+g x = show x
+
index 9969d63..8b6f745 100644 (file)
@@ -1,19 +1,19 @@
--- c.f Trac #3613\r
-\r
-module T3613 where\r
-\r
-import Control.Monad\r
-\r
-foo :: Maybe ()\r
-foo = return ()\r
-\r
-bar :: IO ()\r
-bar = return ()\r
-\r
-fun1 = let fooThen m = foo>> m\r
-       in fooThen (bar>> undefined)\r
-\r
-fun2 = let fooThen m = foo>> m\r
-       in fooThen (do {bar; undefined})\r
-\r
-\r
+-- c.f Trac #3613
+
+module T3613 where
+
+import Control.Monad
+
+foo :: Maybe ()
+foo = return ()
+
+bar :: IO ()
+bar = return ()
+
+fun1 = let fooThen m = foo>> m
+       in fooThen (bar>> undefined)
+
+fun2 = let fooThen m = foo>> m
+       in fooThen (do {bar; undefined})
+
+
index 127a82b..1a3bcc1 100644 (file)
@@ -1,17 +1,17 @@
-{-# LANGUAGE GADTs #-}\r
-\r
-module T3950 where\r
-\r
--- Id :: (* -> * -> *) -> * -> * -> *\r
-data Id p x y = Id (p x y)\r
-\r
--- Sealed :: (* -> *) -> *\r
-data Sealed p where\r
-    Sealed :: p x -> Sealed p\r
-\r
--- w :: (* -> * -> *) -> *\r
--- Id p :: * -> * -> *\r
-rp :: Bool -> Maybe (w (Id p))\r
-rp _ = Just rp'\r
-     where rp' :: Sealed (Id p x)\r
-           rp' = undefined\r
+{-# LANGUAGE GADTs #-}
+
+module T3950 where
+
+-- Id :: (* -> * -> *) -> * -> * -> *
+data Id p x y = Id (p x y)
+
+-- Sealed :: (* -> *) -> *
+data Sealed p where
+    Sealed :: p x -> Sealed p
+
+-- w :: (* -> * -> *) -> *
+-- Id p :: * -> * -> *
+rp :: Bool -> Maybe (w (Id p))
+rp _ = Just rp'
+     where rp' :: Sealed (Id p x)
+           rp' = undefined
index 832bb1c..288da56 100644 (file)
@@ -1,28 +1,28 @@
- {-# OPTIONS  -XMultiParamTypeClasses  -XFunctionalDependencies  -XFlexibleInstances #-}  \r
-module HaskellBug where\r
-\r
-data Relation c -- The basic Relation\r
-      = Rel { relnm :: String -- The name of the relation\r
-            , relsrc :: c -- Source concept\r
-            , reltrg :: c -- ^Target concept\r
-            }\r
-        deriving Eq\r
-\r
--- This declaration is ok; should not get an error here\r
-class (Eq concept)=> Association rel concept | rel -> concept where\r
-     source, target :: rel -> concept\r
-      -- e.g. Declaration Concept -> Concept\r
-     sign  :: rel -> (concept,concept)\r
-     sign x = (source x,target x)\r
-     homogeneous :: rel -> Bool\r
-     homogeneous s = source s == target s\r
-\r
-instance (Eq c)=>Association (Relation c) c where\r
-     source = relsrc\r
-     target = reltrg\r
-\r
--- This declaration has a kind error\r
--- The error should be reported here\r
-class (Eq c, Association r c) => Morphic r c where\r
-     multiplicities :: r c -> [c]\r
-     multiplicities _ = []\r
+ {-# OPTIONS  -XMultiParamTypeClasses  -XFunctionalDependencies  -XFlexibleInstances #-}
+module HaskellBug where
+
+data Relation c -- The basic Relation
+      = Rel { relnm :: String -- The name of the relation
+            , relsrc :: c -- Source concept
+            , reltrg :: c -- ^Target concept
+            }
+        deriving Eq
+
+-- This declaration is ok; should not get an error here
+class (Eq concept)=> Association rel concept | rel -> concept where
+     source, target :: rel -> concept
+      -- e.g. Declaration Concept -> Concept
+     sign  :: rel -> (concept,concept)
+     sign x = (source x,target x)
+     homogeneous :: rel -> Bool
+     homogeneous s = source s == target s
+
+instance (Eq c)=>Association (Relation c) c where
+     source = relsrc
+     target = reltrg
+
+-- This declaration has a kind error
+-- The error should be reported here
+class (Eq c, Association r c) => Morphic r c where
+     multiplicities :: r c -> [c]
+     multiplicities _ = []
index c7b41c0..073d1f4 100644 (file)
@@ -1,11 +1,11 @@
-{-# LANGUAGE ImplicitParams #-}\r
-\r
--- Produced a duplicated error message in 7.0\r
-\r
-module T5246 where\r
-\r
-foo :: (?x :: Int) => a\r
-foo = undefined\r
-\r
-bar = let ?x = "hello"\r
-      in foo\r
+{-# LANGUAGE ImplicitParams #-}
+
+-- Produced a duplicated error message in 7.0
+
+module T5246 where
+
+foo :: (?x :: Int) => a
+foo = undefined
+
+bar = let ?x = "hello"
+      in foo
index 8e023fe..10628b5 100644 (file)
@@ -1,15 +1,15 @@
-{-# LANGUAGE ScopedTypeVariables #-}\r
-\r
-module Main where\r
-import Data.IORef\r
-\r
-main :: IO ()\r
-main = do { (r :: IORef (t -> t)) <- newIORef id\r
-             -- r <- newIORef i -- => Type-check error\r
-\r
-          ; writeIORef r (\v -> if v then False else True)\r
-\r
-          ; c <- readIORef r\r
-\r
-          ; print $ c True\r
-          ; print $ c 1234 }\r
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Main where
+import Data.IORef
+
+main :: IO ()
+main = do { (r :: IORef (t -> t)) <- newIORef id
+             -- r <- newIORef i -- => Type-check error
+
+          ; writeIORef r (\v -> if v then False else True)
+
+          ; c <- readIORef r
+
+          ; print $ c True
+          ; print $ c 1234 }
index 93633c5..646cf44 100644 (file)
@@ -1,29 +1,29 @@
-{-# LANGUAGE MultiParamTypeClasses #-}\r
-{-# LANGUAGE FunctionalDependencies #-}\r
-module T5978 where\r
-\r
-class C from to | from -> to where\r
-\r
-instance C Float Char where\r
-instance C Double Bool where\r
-\r
-\r
-polyFoo :: (C from to) => from\r
-polyFoo = undefined\r
-\r
-polyBar ::\r
-   (C fromA toA, C fromB toB) =>\r
-   (toA -> toB) ->\r
-   fromA -> fromB\r
-polyBar = undefined\r
-\r
-\r
-monoBar :: Double\r
-monoBar = polyBar id monoFoo\r
--- fromA = Float, fromB = Double, toA = toB\r
--- [W] C Float to, C Double to\r
--- => [D] to ~ Char, [D] to ~ Bool\r
-\r
-monoFoo :: Float\r
-monoFoo = polyFoo\r
-\r
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FunctionalDependencies #-}
+module T5978 where
+
+class C from to | from -> to where
+
+instance C Float Char where
+instance C Double Bool where
+
+
+polyFoo :: (C from to) => from
+polyFoo = undefined
+
+polyBar ::
+   (C fromA toA, C fromB toB) =>
+   (toA -> toB) ->
+   fromA -> fromB
+polyBar = undefined
+
+
+monoBar :: Double
+monoBar = polyBar id monoFoo
+-- fromA = Float, fromB = Double, toA = toB
+-- [W] C Float to, C Double to
+-- => [D] to ~ Char, [D] to ~ Bool
+
+monoFoo :: Float
+monoFoo = polyFoo
+
index be2b9ca..994b779 100644 (file)
@@ -1,3 +1,3 @@
-module T6022 where\r
-\r
-f x = x == head\r
+module T6022 where
+
+f x = x == head
index 7662a2b..3e9bad3 100644 (file)
@@ -1,7 +1,7 @@
-{-# LANGUAGE TypeFamilies #-}\r
-module T7892 where\r
-\r
-class C (f :: * -> *) where\r
-   type F (f :: *) :: *\r
-\r
-\r
+{-# LANGUAGE TypeFamilies #-}
+module T7892 where
+
+class C (f :: * -> *) where
+   type F (f :: *) :: *
+
+
index 8b9a229..ef89914 100644 (file)
@@ -1,32 +1,32 @@
-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}\r
-\r
--- Here's a nice example of a fundep loop, correctly\r
--- rejected by the undecidable-instance check.\r
--- See comments below.\r
-\r
-module FDLoop where\r
-\r
-class C a b | a -> b where f :: a -> b\r
-newtype T a = T a\r
-\r
-instance (C a b, Eq b) => Eq (T a) where (==) = undefined\r
-\r
-g x = (undefined :: d -> d -> d -> ()) (T x) (f x) (undefined :: Eq e => e)\r
-\r
-{-    Analysis\r
-\r
-   f :: C a b => a -> b\r
-   x :: a\r
-   b ~ T a\r
-   need: C a b\r
-   b ~ e\r
-   need: Eq e\r
-\r
-Hence need (C a (T a), Eq (T a))\r
-Apply instance for Eq\r
-     = (C a (T a), C a g, Eq g)\r
-Apply functional dependency: g ~ T a\r
-     = (C a (T a), C a (T a), Eq (T a))\r
-And now we are back where we started\r
--}\r
-\r
+{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
+
+-- Here's a nice example of a fundep loop, correctly
+-- rejected by the undecidable-instance check.
+-- See comments below.
+
+module FDLoop where
+
+class C a b | a -> b where f :: a -> b
+newtype T a = T a
+
+instance (C a b, Eq b) => Eq (T a) where (==) = undefined
+
+g x = (undefined :: d -> d -> d -> ()) (T x) (f x) (undefined :: Eq e => e)
+
+{-    Analysis
+
+   f :: C a b => a -> b
+   x :: a
+   b ~ T a
+   need: C a b
+   b ~ e
+   need: Eq e
+
+Hence need (C a (T a), Eq (T a))
+Apply instance for Eq
+     = (C a (T a), C a g, Eq g)
+Apply functional dependency: g ~ T a
+     = (C a (T a), C a (T a), Eq (T a))
+And now we are back where we started
+-}
+
index 19989d4..89ba483 100644 (file)
@@ -1,9 +1,9 @@
--- Kind error message test\r
-\r
-module ShouldFail where\r
-\r
-type IntMap a = [a]\r
\r
-data SymDict a = SymDict {idcounter:: Int, itot::IntMap a}\r
-\r
-data SymTable = SymTable {  dict::SymDict   }\r
+-- Kind error message test
+
+module ShouldFail where
+
+type IntMap a = [a]
+
+data SymDict a = SymDict {idcounter:: Int, itot::IntMap a}
+
+data SymTable = SymTable {  dict::SymDict   }
index 791dd19..1fb82bb 100644 (file)
@@ -1,22 +1,22 @@
--- GHC 6.4 gave pretty horrible error messages \r
--- for some of these examples\r
--- c.f. SourceForge [ ghc-Bugs-1231273 ] confusing error\r
-\r
-module ShouldFail where\r
-\r
-f :: Int -> Int\r
-f x = x\r
-\r
-bar = f 3 9\r
-\r
-rot xs = 3 `f` 4\r
-\r
-bot xs = map (3 `f`) xs\r
-\r
-t = ((\Just x -> x) :: Maybe a -> a) (Just 1)\r
-\r
-g :: Int -> Int\r
-g x y = True\r
-  \r
-\r
-\r
+-- GHC 6.4 gave pretty horrible error messages
+-- for some of these examples
+-- c.f. SourceForge [ ghc-Bugs-1231273 ] confusing error
+
+module ShouldFail where
+
+f :: Int -> Int
+f x = x
+
+bar = f 3 9
+
+rot xs = 3 `f` 4
+
+bot xs = map (3 `f`) xs
+
+t = ((\Just x -> x) :: Maybe a -> a) (Just 1)
+
+g :: Int -> Int
+g x y = True
+
+
+
index f5ab46f..ccc7727 100644 (file)
@@ -1,7 +1,7 @@
-module Foo1 where\r
-\r
--- Variant: class used as data\r
-class SClass a where\r
- sFun :: a -> SData a\r
\r
-data SData a = SCon (SClass a)\r
+module Foo1 where
+
+-- Variant: class used as data
+class SClass a where
+ sFun :: a -> SData a
+
+data SData a = SCon (SClass a)
index 1ca703a..83ea462 100644 (file)
@@ -1,7 +1,7 @@
-module Foo1 where\r
-\r
--- Variant: ill-kinded. \r
-class XClass a where\r
- xFun :: a -> XData\r
\r
-data XData = XCon XClass\r
+module Foo1 where
+
+-- Variant: ill-kinded.
+class XClass a where
+ xFun :: a -> XData
+
+data XData = XCon XClass
index 3de1607..a4d5ec9 100644 (file)
@@ -1,11 +1,11 @@
--- Checks that the correct type is used checking the using clause of \r
--- the group when a by clause is present\r
-\r
-{-# OPTIONS_GHC -XTransformListComp #-}\r
-\r
-module ShouldFail where\r
-\r
-foo = [ length x\r
-      | x <- [1..10]\r
-      , then group by x using take 2\r
-      ]\r
+-- Checks that the correct type is used checking the using clause of
+-- the group when a by clause is present
+
+{-# OPTIONS_GHC -XTransformListComp #-}
+
+module ShouldFail where
+
+foo = [ length x
+      | x <- [1..10]
+      , then group by x using take 2
+      ]
index f8bfd8f..66e5faf 100644 (file)
@@ -1,11 +1,11 @@
--- Checks that the correct type is used checking the using clause of the transform\r
-\r
-{-# OPTIONS_GHC -XTransformListComp #-}\r
-\r
-module ShouldFail where\r
-\r
-import Data.List(inits)\r
-\r
-z :: [Int]\r
-z = [x | x <- [3, 2, 1], then inits]\r
-\r
+-- Checks that the correct type is used checking the using clause of the transform
+
+{-# OPTIONS_GHC -XTransformListComp #-}
+
+module ShouldFail where
+
+import Data.List(inits)
+
+z :: [Int]
+z = [x | x <- [3, 2, 1], then inits]
+