ghc-exactprint-1.3.0: src/Language/Haskell/GHC/ExactPrint/Lookup.hs
module Language.Haskell.GHC.ExactPrint.Lookup
(
keywordToString
, AnnKeywordId(..)
, Comment(..)
) where
import GHC (AnnKeywordId(..))
import Language.Haskell.GHC.ExactPrint.Types
-- | Maps `AnnKeywordId` to the corresponding String representation.
-- There is no specific mapping for the following constructors.
-- `AnnOpen`, `AnnClose`, `AnnVal`, `AnnPackageName`, `AnnHeader`, `AnnFunId`,
-- `AnnInfix`
keywordToString :: AnnKeywordId -> String
keywordToString kw =
let mkErr x = error $ "keywordToString: missing case for:" ++ show x
in
case kw of
-- Specifically handle all cases so that there are pattern match
-- warnings if new constructors are added.
AnnAnyclass -> "anyclass"
AnnOpen -> mkErr kw
AnnClose-> mkErr kw
AnnVal -> mkErr kw
AnnPackageName -> mkErr kw
AnnHeader-> mkErr kw
AnnFunId -> mkErr kw
AnnInfix -> mkErr kw
AnnValStr-> mkErr kw
AnnName -> mkErr kw
AnnAs -> "as"
AnnAt -> "@"
AnnBang -> "!"
AnnBackquote-> "`"
AnnBy -> "by"
AnnCase -> "case"
AnnClass -> "class"
AnnCloseB -> "|)"
AnnCloseBU-> "⦈"
AnnCloseC -> "}"
AnnCloseP -> ")"
AnnClosePH-> "#)"
AnnCloseQ -> "|]"
AnnCloseQU-> "⟧"
AnnCloseS -> "]"
AnnColon -> ":"
AnnComma -> ","
AnnCommaTuple-> ","
AnnDarrow -> "=>"
AnnData -> "data"
AnnDcolon -> "::"
AnnDefault-> "default"
AnnDeriving-> "deriving"
AnnDo -> "do"
AnnDot -> "."
AnnDotdot -> ".."
AnnElse -> "else"
AnnEqual -> "="
AnnExport -> "export"
AnnFamily -> "family"
AnnForall -> "forall"
AnnForeign -> "foreign"
AnnGroup -> "group"
AnnHiding -> "hiding"
AnnIf -> "if"
AnnImport -> "import"
AnnIn -> "in"
AnnInstance-> "instance"
AnnLam -> "\\"
AnnLarrow -> "<-"
AnnLet -> "let"
AnnLollyU -> "⊸"
AnnMdo -> "mdo"
AnnMinus -> "-"
AnnModule -> "module"
AnnNewtype -> "newtype"
AnnOf -> "of"
AnnOpenB -> "(|"
AnnOpenBU -> "⦇"
AnnOpenC -> "{"
AnnOpenE -> "[e|"
AnnOpenEQ -> "[|"
AnnOpenEQU -> "⟦"
AnnOpenP -> "("
AnnOpenPH -> "(#"
AnnOpenS -> "["
AnnPattern -> "pattern"
AnnPercent -> "%"
AnnPercentOne -> "%1"
AnnProc -> "proc"
AnnQualified-> "qualified"
AnnRarrow -> "->"
AnnRec -> "rec"
AnnRole -> "role"
AnnSafe -> "safe"
AnnSemi -> ";"
AnnSignature -> "signature"
AnnStock -> "stock"
AnnStatic -> "static"
AnnThen -> "then"
AnnTilde -> "~"
AnnType -> "type"
AnnUnit -> "()"
AnnUsing -> "using"
AnnVbar -> "|"
AnnWhere -> "where"
Annlarrowtail-> "-<"
Annrarrowtail-> ">-"
AnnLarrowtail-> "-<<"
AnnRarrowtail-> ">>-"
AnnSimpleQuote -> "'"
AnnThTyQuote -> "''"
AnnDollar -> "$"
AnnDollarDollar-> "$$"
AnnDarrowU -> "⇒"
AnnDcolonU -> "∷"
AnnForallU -> "∀"
AnnLarrowU -> "←"
AnnLarrowtailU -> "⤛"
AnnRarrowU -> "→"
AnnRarrowtailU -> "⤜"
AnnlarrowtailU -> "⤙"
AnnrarrowtailU -> "⤚"
-- AnnTypeApp -> "@"
AnnVia -> "via"