testsuite: Add test for #13524
authorBen Gamari <bgamari.foss@gmail.com>
Wed, 5 Apr 2017 00:47:20 +0000 (20:47 -0400)
committerBen Gamari <ben@smart-cactus.org>
Wed, 5 Apr 2017 00:47:21 +0000 (20:47 -0400)
Reviewers: austin

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3418

testsuite/tests/typecheck/should_compile/T13524.hs [new file with mode: 0644]
testsuite/tests/typecheck/should_compile/all.T

diff --git a/testsuite/tests/typecheck/should_compile/T13524.hs b/testsuite/tests/typecheck/should_compile/T13524.hs
new file mode 100644 (file)
index 0000000..0852468
--- /dev/null
@@ -0,0 +1,27 @@
+{-# LANGUAGE PartialTypeSignatures #-}
+{-# LANGUAGE ScopedTypeVariables   #-}
+{-# LANGUAGE TypeApplications      #-}
+
+{-# OPTIONS_GHC -fno-warn-partial-type-signatures #-}
+
+type Empty a = ()
+
+foo :: expr a -> expr a -> expr (Empty a)
+foo = undefined
+
+newtype Expr a = SPT {run :: String}
+
+pt1 :: forall a ptexpr . ptexpr a -> ptexpr (Empty a)
+pt1 a = foo a a
+
+pt2 :: forall a ptexpr . ptexpr a -> ptexpr _
+pt2 a = foo a a
+
+main :: IO ()
+main = do
+    -- This typechecks without any trouble.
+    putStrLn $ run $ pt1 @Int @Expr undefined
+
+    -- This should also typecheck, but doesn't since GHC seems to mix up the
+    -- order of the type variables.
+    putStrLn $ run $ pt2 @Int @Expr undefined
index c6674c9..2436a71 100644 (file)
@@ -551,3 +551,4 @@ test('T13343', normal, compile, [''])
 test('T13458', normal, compile, [''])
 test('T13490', normal, compile, [''])
 test('T13474', normal, compile, [''])
 test('T13458', normal, compile, [''])
 test('T13490', normal, compile, [''])
 test('T13474', normal, compile, [''])
+test('T13524', expect_broken(13524), compile, [''])