Test Trac #5676, and wibble to error message on mod45
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 12 Dec 2011 00:37:00 +0000 (00:37 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 12 Dec 2011 08:05:04 +0000 (08:05 +0000)
testsuite/tests/module/mod45.stderr
testsuite/tests/typecheck/should_compile/T5676.hs [new file with mode: 0644]
testsuite/tests/typecheck/should_compile/all.T

index bba6b1b..8ead3b5 100644 (file)
@@ -1,2 +1,6 @@
-
-mod45.hs:5:3: Misplaced type signature: == :: T -> T -> Bool
+\r
+mod45.hs:5:3:\r
+    Illegal type signature in instance declaration:\r
+      (==) :: T -> T -> Bool\r
+    (Use -XInstanceSigs to allow this)\r
+    In the instance declaration for `Eq T'\r
diff --git a/testsuite/tests/typecheck/should_compile/T5676.hs b/testsuite/tests/typecheck/should_compile/T5676.hs
new file mode 100644 (file)
index 0000000..9fa8404
--- /dev/null
@@ -0,0 +1,19 @@
+{-# LANGUAGE ScopedTypeVariables, InstanceSigs #-}\r
+module Foo where\r
+\r
+data T a = T a\r
+\r
+class C a where\r
+  foo :: b -> a -> (a, [b])\r
+\r
+instance C a => C (T a) where\r
+  foo :: forall b. b -> T a -> (T a, [b])\r
+  foo x (T y) = (T y, xs)\r
+     where\r
+       xs :: [b]\r
+       xs = [x,x,x]\r
+\r
+instance Functor T where\r
+  fmap :: (a -> b) -> T a -> T b\r
+  fmap f (T x) = T (f x)\r
+\r
index 0d40a02..acfec5e 100644 (file)
@@ -368,4 +368,5 @@ test('T5581', normal, compile, [''])
 test('T5655', normal, compile, [''])
 test('T5643', normal, compile, [''])
 test('T5595', normal, compile, [''])
+test('T5676', normal, compile, [''])