blob: d3a7df6c2ab80bbd4165cc2094f199ace9c14df5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
module Lookup
(
keywordToString
, AnnKeywordId(..)
, Comment(..)
) where
import GHC (AnnKeywordId(..))
import 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"
AnnBang -> "!"
AnnBackquote -> "`"
AnnBy -> "by"
AnnCase -> "case"
AnnCases -> "cases"
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 -> "⤚"
AnnVia -> "via"
|