Repository : ssh://darcs.haskell.org//srv/darcs/packages/template-haskell

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/d7b864b7ddb0e8c2f58d08dfd50e843eb8966b90

>---------------------------------------------------------------

commit d7b864b7ddb0e8c2f58d08dfd50e843eb8966b90
Author: Simon Peyton Jones <[email protected]>
Date:   Tue Sep 18 11:48:05 2012 +0100

    In the Template Haskell pretty printer, don't call error
    
    There were two cases in which we called error
      * An InfixE with an operator epxression other than VarE or ConE
      * A comprehension with empty Stmts, ie CompE []
    
    Crashing doesn't help much.  Now the library puts in the pretty
    printed output a textual signal about what went wrong.
    
    This addresses the crash in Trac #7235, although doesn't fix
    the underlying cause, which remains shrouded in obscurity.

>---------------------------------------------------------------

 Language/Haskell/TH/Ppr.hs |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Language/Haskell/TH/Ppr.hs b/Language/Haskell/TH/Ppr.hs
index 4de7588..60b9c01 100644
--- a/Language/Haskell/TH/Ppr.hs
+++ b/Language/Haskell/TH/Ppr.hs
@@ -84,7 +84,7 @@ instance Ppr Exp where
 pprInfixExp :: Exp -> Doc
 pprInfixExp (VarE v) = pprName' Infix v
 pprInfixExp (ConE v) = pprName' Infix v
-pprInfixExp _        = error "Attempt to pretty-print non-variable or 
constructor in infix context!"
+pprInfixExp _        = text "<<Non-variable/constructor in infix context>>"
 
 pprExp :: Precedence -> Exp -> Doc
 pprExp _ (VarE v)     = pprName' Applied v
@@ -127,7 +127,7 @@ pprExp i (CaseE e ms)
  = parensIf (i > noPrec) $ text "case" <+> ppr e <+> text "of"
                         $$ nest nestDepth (ppr ms)
 pprExp i (DoE ss) = parensIf (i > noPrec) $ text "do" <+> ppr ss
-pprExp _ (CompE []) = error "Can't happen: pprExp (CompExp [])"
+pprExp _ (CompE []) = text "<<Empty CompExp>>"
 -- This will probably break with fixity declarations - would need a ';'
 pprExp _ (CompE ss) = text "[" <> ppr s
                   <+> text "|"



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to