language-ocaml-0.1.31: lib/Language/OCaml/PrettyPrinter/Case.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE UndecidableInstances #-}
module Language.OCaml.PrettyPrinter.Case
( casePP
) where
import Data.Text.Prettyprint.Doc
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.PrettyPrinter.Pattern ()
casePP :: (Pretty Expression) => Case -> Doc a
casePP d = fillCat [ pipe, space, lhs, guard, space, "->", space, rhs ]
where
lhs = pretty $ pcLHS d
rhs = pretty $ pcRHS d
guard = case pcGuard d of
Nothing -> ""
Just g -> space <> fillSep [ "when", pretty g ]
instance Pretty Expression => Pretty Case where
pretty = casePP