
#15423: Ungrammatical error message involving a pattern binding -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.3 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Take a look at this error message from GHC's `Typeable1` test case: {{{ Typeable1.hs:22:5: error: [-Winaccessible-code (in -Wdefault), -Werror =inaccessible-code] • Couldn't match type ‘ComposeK’ with ‘a3 b3’ Inaccessible code in a pattern with pattern synonym: App :: forall k2 (t :: k2). () => forall k1 (a :: k1 -> k2) (b :: k1). (t ~ a b) => TypeRep a -> TypeRep b -> TypeRep t, in a pattern binding in 'do' block }}} In particular, note the "in a pattern binding in 'do' block" part. I think that should be "in **a** 'do' block". I believe fixing this is a simple matter of applying this patch: {{{#!diff diff --git a/compiler/hsSyn/HsExpr.hs b/compiler/hsSyn/HsExpr.hs index 96d86c8..a5c65fb 100644 --- a/compiler/hsSyn/HsExpr.hs +++ b/compiler/hsSyn/HsExpr.hs @@ -2804,7 +2804,7 @@ pprMatchContextNoun PatBindGuards = text "pattern binding guards" pprMatchContextNoun LambdaExpr = text "lambda abstraction" pprMatchContextNoun ProcExpr = text "arrow abstraction" pprMatchContextNoun (StmtCtxt ctxt) = text "pattern binding in" - $$ pprStmtContext ctxt + $$ pprAStmtContext ctxt pprMatchContextNoun PatSyn = text "pattern synonym declaration" ----------------- }}} Patch incoming. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15423 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler