diff --git a/src/Windows12/Ast.hs b/src/Windows12/Ast.hs index 32c5362..0365f10 100644 --- a/src/Windows12/Ast.hs +++ b/src/Windows12/Ast.hs @@ -192,10 +192,10 @@ instance Pretty Bind where pretty (Bind n t) = pretty n <+> ":" <+> pretty t instance Pretty TLStruct where - pretty (Struct n fields) = "struct" <+> pretty n <+> prettyBlock fields + pretty (Struct n fields) = "struct" <+> pretty n <+> prettyFields fields instance Pretty TLEnum where - pretty (Enum n fields) = "enum" <+> pretty n <+> prettyBlock fields + pretty (Enum n fields) = "enum" <+> pretty n <+> prettyFields fields instance Pretty TLFunc where pretty (Func n args ret body) = @@ -209,5 +209,8 @@ instance Pretty TL where instance Pretty Program where pretty (Program structs enums funcs) = vsep (map pretty structs) <> line <> vsep (map pretty enums) <> line <> vsep (map pretty funcs) +prettyFields :: (Pretty a) => [a] -> Doc ann +prettyFields fields = lbrace <> line <> indent 4 (vsep (punctuate comma (map pretty fields))) <> line <> rbrace + prettyBlock :: (Pretty a) => [a] -> Doc ann prettyBlock stmts = lbrace <> line <> indent 4 (vsep (map pretty stmts)) <> line <> rbrace