blob: 18e4e32f6fd5e7471c7bcd7e8e246be8179a946b (
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
126
127
128
129
|
module Lookup
(
keywordToString
, KeywordId(..)
, 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 :: KeywordId -> 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.
AnnComment _ -> mkErr kw
AnnString _ -> mkErr kw
AnnSemiSep -> ";"
(G AnnAnyclass) -> "anyclass"
(G AnnOpen ) -> mkErr kw
(G AnnClose ) -> mkErr kw
(G AnnVal ) -> mkErr kw
(G AnnPackageName) -> mkErr kw
(G AnnHeader ) -> mkErr kw
(G AnnFunId ) -> mkErr kw
(G AnnInfix ) -> mkErr kw
(G AnnValStr ) -> mkErr kw
(G AnnName ) -> mkErr kw
(G AnnAs ) -> "as"
(G AnnAt ) -> "@"
(G AnnBang ) -> "!"
(G AnnBackquote ) -> "`"
(G AnnBy ) -> "by"
(G AnnCase ) -> "case"
(G AnnClass ) -> "class"
(G AnnCloseB ) -> "|)"
(G AnnCloseBU ) -> "⦈"
(G AnnCloseC ) -> "}"
(G AnnCloseP ) -> ")"
(G AnnClosePH ) -> "#)"
(G AnnCloseQ ) -> "|]"
(G AnnCloseQU ) -> "⟧"
(G AnnCloseS ) -> "]"
(G AnnColon ) -> ":"
(G AnnComma ) -> ","
(G AnnCommaTuple ) -> ","
(G AnnDarrow ) -> "=>"
(G AnnData ) -> "data"
(G AnnDcolon ) -> "::"
(G AnnDefault ) -> "default"
(G AnnDeriving ) -> "deriving"
(G AnnDo ) -> "do"
(G AnnDot ) -> "."
(G AnnDotdot ) -> ".."
(G AnnElse ) -> "else"
(G AnnEqual ) -> "="
(G AnnExport ) -> "export"
(G AnnFamily ) -> "family"
(G AnnForall ) -> "forall"
(G AnnForeign ) -> "foreign"
(G AnnGroup ) -> "group"
(G AnnHiding ) -> "hiding"
(G AnnIf ) -> "if"
(G AnnImport ) -> "import"
(G AnnIn ) -> "in"
(G AnnInstance ) -> "instance"
(G AnnLam ) -> "\\"
(G AnnLarrow ) -> "<-"
(G AnnLet ) -> "let"
(G AnnLollyU ) -> "⊸"
(G AnnMdo ) -> "mdo"
(G AnnMinus ) -> "-"
(G AnnModule ) -> "module"
(G AnnNewtype ) -> "newtype"
(G AnnOf ) -> "of"
(G AnnOpenB ) -> "(|"
(G AnnOpenBU ) -> "⦇"
(G AnnOpenC ) -> "{"
(G AnnOpenE ) -> "[e|"
(G AnnOpenEQ ) -> "[|"
(G AnnOpenEQU ) -> "⟦"
(G AnnOpenP ) -> "("
(G AnnOpenPH ) -> "(#"
(G AnnOpenS ) -> "["
(G AnnPattern ) -> "pattern"
(G AnnPercent ) -> "%"
(G AnnPercentOne) -> "%1"
(G AnnProc ) -> "proc"
(G AnnQualified ) -> "qualified"
(G AnnRarrow ) -> "->"
(G AnnRec ) -> "rec"
(G AnnRole ) -> "role"
(G AnnSafe ) -> "safe"
(G AnnSemi ) -> ";"
(G AnnSignature) -> "signature"
(G AnnStock ) -> "stock"
(G AnnStatic ) -> "static"
(G AnnThen ) -> "then"
(G AnnTilde ) -> "~"
(G AnnType ) -> "type"
(G AnnUnit ) -> "()"
(G AnnUsing ) -> "using"
(G AnnVbar ) -> "|"
(G AnnWhere ) -> "where"
(G Annlarrowtail ) -> "-<"
(G Annrarrowtail ) -> ">-"
(G AnnLarrowtail ) -> "-<<"
(G AnnRarrowtail ) -> ">>-"
(G AnnSimpleQuote ) -> "'"
(G AnnThTyQuote ) -> "''"
(G AnnDollar ) -> "$"
(G AnnDollarDollar ) -> "$$"
(G AnnDarrowU) -> "⇒"
(G AnnDcolonU) -> "∷"
(G AnnForallU) -> "∀"
(G AnnLarrowU) -> "←"
(G AnnLarrowtailU) -> "⤛"
(G AnnRarrowU) -> "→"
(G AnnRarrowtailU) -> "⤜"
(G AnnlarrowtailU) -> "⤙"
(G AnnrarrowtailU) -> "⤚"
AnnTypeApp -> "@"
(G AnnVia) -> "via"
|