Improve accuracy of suggestion to use TypeApplications
authorMatthew Pickering <matthewtpickering@gmail.com>
Thu, 25 Feb 2016 14:51:46 +0000 (15:51 +0100)
committerBen Gamari <ben@smart-cactus.org>
Thu, 25 Feb 2016 16:18:27 +0000 (17:18 +0100)
The suggestion only makes sense when we try
to use an as pattern in an expression context.

It is misleading in the case of a lazy pattern and
view pattern.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

compiler/rename/RnExpr.hs
testsuite/tests/module/mod70.stderr
testsuite/tests/rename/should_fail/rnfail016.stderr
testsuite/tests/rename/should_fail/rnfail051.stderr

index ce113b4..4764f3d 100644 (file)
@@ -325,9 +325,10 @@ We return a (bogus) EWildPat in each case.
 -}
 
 rnExpr EWildPat        = return (hsHoleExpr, emptyFVs)   -- "_" is just a hole
-rnExpr e@(EAsPat {})   = patSynErr e
-rnExpr e@(EViewPat {}) = patSynErr e
-rnExpr e@(ELazyPat {}) = patSynErr e
+rnExpr e@(EAsPat {})   =
+  patSynErr e (text "Did you mean to enable TypeApplications?")
+rnExpr e@(EViewPat {}) = patSynErr e empty
+rnExpr e@(ELazyPat {}) = patSynErr e empty
 
 {-
 ************************************************************************
@@ -1854,10 +1855,10 @@ sectionErr expr
   = hang (text "A section must be enclosed in parentheses")
        2 (text "thus:" <+> (parens (ppr expr)))
 
-patSynErr :: HsExpr RdrName -> RnM (HsExpr Name, FreeVars)
-patSynErr e = do { addErr (sep [text "Pattern syntax in expression context:",
+patSynErr :: HsExpr RdrName -> SDoc -> RnM (HsExpr Name, FreeVars)
+patSynErr e explanation = do { addErr (sep [text "Pattern syntax in expression context:",
                                 nest 4 (ppr e)] $$
-                           text "Did you mean to enable TypeApplications?")
+                                  explanation)
                  ; return (EWildPat, emptyFVs) }
 
 badIpBinds :: Outputable a => SDoc -> a -> SDoc
index f0e3042..616ef12 100644 (file)
@@ -1,4 +1,2 @@
 
-mod70.hs:3:8: error:
-    Pattern syntax in expression context: ~1
-    Did you mean to enable TypeApplications?
+mod70.hs:3:8: error: Pattern syntax in expression context: ~1
index 2193ffb..4013255 100644 (file)
@@ -3,6 +3,4 @@ rnfail016.hs:6:7: error:
     Pattern syntax in expression context: x@x
     Did you mean to enable TypeApplications?
 
-rnfail016.hs:7:7: error:
-    Pattern syntax in expression context: ~x
-    Did you mean to enable TypeApplications?
+rnfail016.hs:7:7: error: Pattern syntax in expression context: ~x
index a06ddc5..9c45a61 100644 (file)
@@ -1,4 +1,3 @@
 
 rnfail051.hs:7:17: error:
     Pattern syntax in expression context: _ -> putStrLn "_"
-    Did you mean to enable TypeApplications?