X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FPprExternalCore.lhs;h=5303b0d1b68ffed31265e510bf9547e3c116a907;hb=cd54b707b0d77a3c62ee9f57b82dae98727f1c34;hp=76ef6da9bb3b5e2ec2cf90f109ba6110167d4256;hpb=044805225a08d5e370b72d2efed66880912b0806;p=ghc-hetmet.git diff --git a/compiler/coreSyn/PprExternalCore.lhs b/compiler/coreSyn/PprExternalCore.lhs index 76ef6da..5303b0d 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) @@ -105,10 +106,8 @@ pty (SymCoercion t) = sep [text "%sym", paty t] pty (UnsafeCoercion t1 t2) = sep [text "%unsafe", paty t1, paty t2] -pty (LeftCoercion t) = - sep [text "%left", paty t] -pty (RightCoercion t) = - sep [text "%right", paty t] +pty (NthCoercion n t) = + sep [text "%nth", int n, paty t] pty (InstCoercion t1 t2) = sep [text "%inst", paty t1, paty t2] pty t = pbty t @@ -188,9 +187,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)