Test Trac #12968, plus some comments
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 19 Dec 2016 15:05:57 +0000 (15:05 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 21 Dec 2016 12:26:24 +0000 (12:26 +0000)
compiler/rename/RnNames.hs
compiler/typecheck/TcRnDriver.hs
testsuite/tests/patsyn/should_compile/T12968.hs [new file with mode: 0644]
testsuite/tests/patsyn/should_compile/all.T

index 8da11be..8a7529d 100644 (file)
@@ -1147,6 +1147,8 @@ warnUnusedImportDecls gbl_env
          printMinimalImports usage }
 
 -- | Warn the user about top level binders that lack type signatures.
+-- Called /after/ type inference, so that we can report the
+-- inferred type of the function
 warnMissingSignatures :: TcGblEnv -> RnM ()
 warnMissingSignatures gbl_env
   = do { let exports = availsToNameSet (tcg_exports gbl_env)
index ad49ca0..a1b559c 100644 (file)
@@ -267,6 +267,9 @@ tcRnModuleTcRnM hsc_env hsc_src
         tcg_env <- return (tcg_env { tcg_doc_hdr = maybe_doc_hdr }) ;
 
                 -- Report unused names
+                -- Do this /after/ type inference, so that when reporting
+                -- a function with no type signature we can give the
+                -- inferred type
         reportUnusedNames export_ies tcg_env ;
 
                 -- add extra source files to tcg_dependent_files
diff --git a/testsuite/tests/patsyn/should_compile/T12968.hs b/testsuite/tests/patsyn/should_compile/T12968.hs
new file mode 100644 (file)
index 0000000..9d38500
--- /dev/null
@@ -0,0 +1,14 @@
+{-# LANGUAGE TypeInType, GADTs, ScopedTypeVariables, PatternSynonyms,
+      ViewPatterns #-}
+
+module T12968 where
+
+data TypeRep (a :: k)
+
+data TRAppG (fun :: k2) where
+  TRAppG :: forall k1 (a :: k1 -> k2) (b :: k1) . TypeRep a -> TypeRep b -> TRAppG (a b)
+
+pattern TRApp :: forall k2 (fun :: k2). ()
+              => forall k1 (a :: k1 -> k2) (b :: k1). (fun ~ a b)
+              => TypeRep a -> TypeRep b -> TypeRep fun
+pattern TRApp a b <- ((undefined :: TypeRep fun -> TRAppG fun) -> TRAppG a b)
index 1952672..6bd1461 100644 (file)
@@ -62,3 +62,4 @@ test('T11987', normal, multimod_compile, ['T11987', '-v0'])
 test('T12615', normal, compile, [''])
 test('T12698', normal, compile, [''])
 test('T12746', normal, multi_compile, ['T12746', [('T12746A.hs', '-c')],'-v0'])
+test('T12968', normal, compile, [''])