language-ocaml-0.1.31: lib/Language/OCaml/PrettyPrinter/StructureItemDesc.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE UndecidableInstances #-}
module Language.OCaml.PrettyPrinter.StructureItemDesc
( structureItemDescPP
) where
import Data.Text.Prettyprint.Doc
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.PrettyPrinter.Expression ()
import Language.OCaml.PrettyPrinter.ModuleBinding ()
import Language.OCaml.PrettyPrinter.OpenDescription ()
import Language.OCaml.PrettyPrinter.TypeDeclaration ()
import Language.OCaml.PrettyPrinter.ValueBinding ()
structureItemDescPP ::
(Pretty Payload) => StructureItemDesc -> Doc a
structureItemDescPP = \case
PstrAttribute _a -> error "TODO"
PstrClass _ -> error "TODO"
PstrClassType _ -> error "TODO"
PstrEval e _a -> pretty e
PstrException _e -> error "TODO"
PstrExtension _e _a -> error "TODO"
PstrInclude _ -> error "TODO"
PstrModType _ -> error "TODO"
PstrModule m -> pretty m
PstrOpen o -> pretty o
PstrPrimitive _ -> error "TODO"
PstrRecModule _ -> error "TODO"
PstrType _r l -> case l of
[] -> error "?"
h:t -> vcat $ fillSep [ "type", pretty h ]
: map ((\ d -> fillSep [ "\nand", d]) . pretty) t
PstrTypExt _ -> error "TODO"
PstrValue r l -> case l of
[] -> error "?"
h : t ->
vcat $ []
++ [ fillCat [ "let ", pretty r, pretty h ] ]
++ map ((\ d -> fillSep [ "\nand", d ]) . pretty) t
instance (Pretty Payload) => Pretty StructureItemDesc where
pretty = structureItemDescPP