Add test for #12589
[ghc.git] / testsuite / tests / typecheck / should_fail / FrozenErrorTests.hs
index bea5495..390333c 100644 (file)
@@ -1,56 +1,49 @@
-{-# LANGUAGE RankNTypes, GADTs, TypeFamilies #-}\r
-module Test where \r
-\r
-\r
-data T a where \r
-  MkT :: a -> T a \r
-  MkT2 :: forall a b. (b ~ T b) => b -> T a\r
-  MkT3 :: forall a. (a ~ Bool) => T a \r
--- Occurs checks in givens\r
-foo :: forall a. (a ~ T a) => a -> a \r
-foo x = x \r
-\r
-blah x = case x of \r
-           MkT2 y -> ()\r
-\r
--- Mismatches in givens \r
-bloh :: T Int -> () \r
-bloh x = case x of \r
-           MkT3 -> () \r
-\r
-type family F a b \r
-type family G a b\r
-type instance F a Bool = a \r
-type instance G a Char = a\r
-\r
-goo1 :: forall a b. (F a b ~ [a]) => b -> a  -> a\r
-goo1 = undefined \r
-\r
-goo2 :: forall a. G a Char ~ [Int] => a -> a\r
-goo2 = undefined\r
-\r
--- Just an occurs check\r
-test1 = goo1 False undefined\r
-\r
--- A frozen occurs check, now transformed to decomposition error\r
-test2 = goo2 (goo1 False undefined)\r
-test3 = goo1 False (goo2 undefined)\r
-\r
-\r
--- A frozen occurs check, now transformed to both a decomposition and occurs check\r
-data M a where \r
-  M :: M a \r
-data T2 a b where\r
-  T2 :: T2 a b \r
-\r
-goo3 :: forall a b. F a b ~ T2 (M a) a => b -> a -> a \r
-goo3 = undefined\r
-\r
-goo4 :: forall a c. G a Char ~ T2 (T2 c c) c => a -> a\r
-goo4 = undefined \r
-\r
-test4 = goo4 (goo3 False undefined)\r
-test5 = goo3 False (goo4 undefined)\r
-\r
-\r
-\r
+{-# LANGUAGE RankNTypes, GADTs, TypeFamilies #-}
+module Test where 
+
+
+data T a where 
+  MkT :: a -> T a 
+  MkT3 :: forall a. (a ~ Bool) => T a 
+
+-- Mismatches in givens 
+bloh :: T Int -> () 
+bloh x = case x of 
+           MkT3 -> () 
+
+type family F a b 
+type family G a b
+type instance F a Bool = a 
+type instance G a Char = a
+
+goo1 :: forall a b. (F a b ~ [a]) => b -> a  -> a
+goo1 = undefined 
+
+goo2 :: forall a. G a Char ~ [Int] => a -> a
+goo2 = undefined
+
+-- Just an occurs check
+test1 = goo1 False undefined
+
+-- A frozen occurs check, now transformed to decomposition error
+test2 = goo2 (goo1 False undefined)
+test3 = goo1 False (goo2 undefined)
+
+
+-- A frozen occurs check, now transformed to both a decomposition and occurs check
+data M a where 
+  M :: M a 
+data T2 a b where
+  T2 :: T2 a b 
+
+goo3 :: forall a b. F a b ~ T2 (M a) a => b -> a -> a 
+goo3 = undefined
+
+goo4 :: forall a c. G a Char ~ T2 (T2 c c) c => a -> a
+goo4 = undefined 
+
+test4 = goo4 (goo3 False undefined)
+test5 = goo3 False (goo4 undefined)
+
+
+