X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FPprExternalCore.lhs;h=c34f7b842a45140ab8df52fd97e657b0dfdfbc4c;hb=e4db45612e3efa59251239e1e0b8a0440783b966;hp=e46a871ca100f1ab7cf82b9f40f48bb5207e8538;hpb=4c6a3f787abcaed009a574196d82237d9ae64fc8;p=ghc-hetmet.git diff --git a/compiler/coreSyn/PprExternalCore.lhs b/compiler/coreSyn/PprExternalCore.lhs index e46a871..c34f7b8 100644 --- a/compiler/coreSyn/PprExternalCore.lhs +++ b/compiler/coreSyn/PprExternalCore.lhs @@ -54,21 +54,12 @@ 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,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. --- At the same time, we need the newtype decl to declare the tycon itself. --- Sigh. - text "%newtype" <+> pqname tcon <+> (hsep (map ptbind tbinds)) - $$ indent (axiomclause $$ repclause) - where axiomclause = char '^' - <+> parens (pqname coercion <+> (hsep (map ptbind tbs)) - <+> text "::" - <+> pkind k) - repclause = case rep of - Just ty -> char '=' <+> pty ty - Nothing -> empty +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 pcdef :: Cdef -> Doc @@ -82,10 +73,7 @@ pname id = text (zEncodeString id) pqname :: Qual Id -> Doc pqname ("",id) = pname id --- We print out a special character before a qualified name so as to --- disambiguate unqualified names like "m" from qualified names like --- "m:Foo.Bar.y". This makes the ext-core parser easier. -pqname (m,id) = char '^' <> text m <> char '.' <> pname id +pqname (m,id) = text m <> char '.' <> pname id ptbind, pattbind :: Tbind -> Doc ptbind (t,Klifted) = pname t @@ -110,7 +98,7 @@ paty (Tcon c) = pqname c paty t = parens (pty t) pbty (Tapp(Tapp(Tcon tc) t1) t2) | tc == tcArrow = parens(fsep [pbty t1, text "->",pty t2]) -pbty (Tapp t1 t2) = pappty t1 [t2] +pbty (Tapp t1 t2) = parens $ pappty t1 [t2] pbty t = paty t pty (Tapp(Tapp(Tcon tc) t1) t2) | tc == tcArrow = fsep [pbty t1, text "->",pty t2]