X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FcoreSyn%2FPprExternalCore.lhs;h=3c4b25e420e3754168a615db229a85ed1751884d;hp=25394e2bf4cc41c9689b47731eddb9afd4109147;hb=841e81e28f8cc711f624fdca122219a5bbde2fae;hpb=391a3e9c08c470bd1444cba2e5111e253c19ea84 diff --git a/compiler/coreSyn/PprExternalCore.lhs b/compiler/coreSyn/PprExternalCore.lhs index 25394e2..3c4b25e 100644 --- a/compiler/coreSyn/PprExternalCore.lhs +++ b/compiler/coreSyn/PprExternalCore.lhs @@ -9,7 +9,8 @@ import Encoding import ExternalCore import Pretty -import Char +import Data.Char +import Data.Ratio instance Show Module where showsPrec _ m = shows (pmodule m) @@ -56,10 +57,7 @@ ptdef (Data tcon tbinds cdefs) = ptdef (Newtype tcon coercion tbinds rep) = text "%newtype" <+> pqname tcon <+> pqname coercion <+> (hsep (map ptbind tbinds)) $$ indent repclause - where repclause = case rep of - Just ty -> char '=' <+> pty ty - Nothing -> empty - + where repclause = char '=' <+> pty rep pcdef :: Cdef -> Doc pcdef (Constr dcon tbinds tys) = @@ -191,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)