summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2010-05-22 22:50:48 +0000
committerIan Lynagh <igloo@earth.li>2010-05-22 22:50:48 +0000
commit6577bf500f03ec6fbcb749cc3e064118d4d0bc64 (patch)
tree9b85de5232dff6cbf64f278b1c6c5637179fb6e0 /compiler
parentffe09dea3e59cb9ad35cf74a99a1ad7d61cd3626 (diff)
downloadhaskell-6577bf500f03ec6fbcb749cc3e064118d4d0bc64.tar.gz
Core prettyprinter fixes. Patch from Tim Chevalier. Fixes #4085
Diffstat (limited to 'compiler')
-rw-r--r--compiler/coreSyn/PprExternalCore.lhs10
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/coreSyn/PprExternalCore.lhs b/compiler/coreSyn/PprExternalCore.lhs
index e33c7a018e..3c4b25e420 100644
--- a/compiler/coreSyn/PprExternalCore.lhs
+++ b/compiler/coreSyn/PprExternalCore.lhs
@@ -10,6 +10,7 @@ import ExternalCore
import Pretty
import Data.Char
+import Data.Ratio
instance Show Module where
showsPrec _ m = shows (pmodule m)
@@ -188,9 +189,12 @@ palt (Adefault e) =
plit :: Lit -> Doc
plit (Lint i t) = parens (integer i <> text "::" <> pty t)
--- we use (text (show r)) because "(rational r)" was printing out things
--- like "2.0e-2" (which isn't External Core)
-plit (Lrational r t) = parens (text (show r) <> text "::" <> pty t)
+-- we use (text (show (numerator r))) (and the same for denominator)
+-- because "(rational r)" was printing out things like "2.0e-2" (which
+-- isn't External Core), and (text (show r)) was printing out things
+-- like "((-1)/5)" which isn't either (it should be "(-1/5)").
+plit (Lrational r t) = parens (text (show (numerator r)) <+> char '%'
+ <+> text (show (denominator r)) <> text "::" <> pty t)
plit (Lchar c t) = parens (text ("\'" ++ escape [c] ++ "\'") <> text "::" <> pty t)
plit (Lstring s t) = parens (pstring s <> text "::" <> pty t)