language-ocaml-0.1.31: lib/Language/OCaml/PrettyPrinter/PatternDesc.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE UndecidableInstances #-}
module Language.OCaml.PrettyPrinter.PatternDesc
( patternDescPP
) where
import Data.Text.Prettyprint.Doc
import Language.OCaml.Definitions.Parsing.ParseTree
import Language.OCaml.PrettyPrinter.ModuleBinding ()
import Language.OCaml.PrettyPrinter.OpenDescription ()
import Language.OCaml.PrettyPrinter.TypeDeclaration ()
patternDescPP :: Pretty Pattern => PatternDesc -> Doc a
patternDescPP = \case
PpatAlias _p _v -> error "TODO"
PpatAny -> "_"
PpatArray _ -> error "TODO"
PpatConstant _c -> error "TODO"
PpatConstraint _ _ -> error "TODO"
PpatConstruct i p -> case p of
Nothing -> pretty i
Just p' ->
-- NOTE: adding space here so as to print `Constructor _` rather than `Constructor_`
fillCat [ pretty i, space, pretty p' ]
PpatException _ -> error "TODO"
PpatExtension _ -> error "TODO"
PpatInterval _ _ -> error "TODO"
PpatLazy _ -> error "TODO"
PpatOpen _ _ -> error "TODO"
PpatOr p1 p2 -> vcat [ pretty p1, fillSep [ pipe, pretty p2 ] ]
PpatRecord _ _ -> error "TODO"
PpatTuple l -> encloseSep "(" ")" "," $ map pretty l
PpatType _ -> error "TODO"
PpatUnpack _ -> error "TODO"
PpatVar v -> pretty v
PpatVariant _ _ -> error "TODO"
instance Pretty Pattern => Pretty PatternDesc where
pretty = patternDescPP