X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FcoreSyn%2FPprExternalCore.lhs;h=e46a871ca100f1ab7cf82b9f40f48bb5207e8538;hp=cb9b0e773ebb513281993ea95ba0b945729ef274;hb=4c6a3f787abcaed009a574196d82237d9ae64fc8;hpb=cc52f604e67ad4b45ce449e7b957379f7a85855f;ds=sidebyside diff --git a/compiler/coreSyn/PprExternalCore.lhs b/compiler/coreSyn/PprExternalCore.lhs index cb9b0e7..e46a871 100644 --- a/compiler/coreSyn/PprExternalCore.lhs +++ b/compiler/coreSyn/PprExternalCore.lhs @@ -54,7 +54,7 @@ ptdef (Data tcon tbinds cdefs) = (text "%data" <+> pqname tcon <+> (hsep (map ptbind tbinds)) <+> char '=') $$ indent (braces ((vcat (punctuate (char ';') (map pcdef cdefs))))) -ptdef (Newtype tcon tbinds (coercion,k) rep) = +ptdef (Newtype tcon tbinds (coercion,tbs,k) rep) = -- Here we take apart the newtype tycon in order to get the newtype coercion, -- which needs to be represented in the External Core file because it's not -- straightforward to derive its definition from the newtype declaration alone. @@ -62,8 +62,10 @@ ptdef (Newtype tcon tbinds (coercion,k) rep) = -- Sigh. text "%newtype" <+> pqname tcon <+> (hsep (map ptbind tbinds)) $$ indent (axiomclause $$ repclause) - where axiomclause = char '^' <+> parens (pqname coercion <+> text "::" - <+> pkind k) + where axiomclause = char '^' + <+> parens (pqname coercion <+> (hsep (map ptbind tbs)) + <+> text "::" + <+> pkind k) repclause = case rep of Just ty -> char '=' <+> pty ty Nothing -> empty @@ -71,9 +73,9 @@ ptdef (Newtype tcon tbinds (coercion,k) rep) = pcdef :: Cdef -> Doc pcdef (Constr dcon tbinds tys) = - (pname dcon) <+> (sep [hsep (map pattbind tbinds),sep (map paty tys)]) + (pqname dcon) <+> (sep [hsep (map pattbind tbinds),sep (map paty tys)]) pcdef (GadtConstr dcon ty) = - (pname dcon) <+> text "::" <+> pty ty + (pqname dcon) <+> text "::" <+> pty ty pname :: Id -> Doc pname id = text (zEncodeString id) @@ -128,10 +130,10 @@ pvdefg (Rec vdefs) = text "%rec" $$ braces (indent (vcat (punctuate (char ';') ( pvdefg (Nonrec vdef) = pvdef vdef pvdef :: Vdef -> Doc --- note: at one point every vdef was getting printed out as "local". --- I think that's manifestly wrong. Right now, the "%local" keyword --- is never used. -pvdef (_l,v,t,e) = sep [pname v <+> text "::" <+> pty t <+> char '=', +-- TODO: Think about whether %local annotations are actually needed. +-- Right now, the local flag is never used, because the Core doc doesn't +-- explain the meaning of %local. +pvdef (_l,v,t,e) = sep [(pqname v <+> text "::" <+> pty t <+> char '='), indent (pexp e)] paexp, pfexp, pexp :: Exp -> Doc