@@ -26,6 +26,7 @@ data Pattern a
2626 | PWild Span a Bool -- ^ Wildcard (underscore) pattern
2727 | PBox Span a Bool (Pattern a ) -- ^ Box patterns
2828 | PInt Span a Bool Int -- ^ Numeric patterns
29+ | PChar Span a Bool Char
2930 | PFloat Span a Bool Double -- ^ Float pattern
3031 | PConstr Span a Bool Id [Id ] [Pattern a ] -- ^ Constructor pattern
3132 deriving (Eq , Show , Generic , Functor , Typeable , Data )
@@ -50,17 +51,19 @@ patternFold
5051 -> (Span -> ann -> Bool -> b -> b )
5152 -> (Span -> ann -> Bool -> Int -> b )
5253 -> (Span -> ann -> Bool -> Double -> b )
54+ -> (Span -> ann -> Bool -> Char -> b )
5355 -> (Span -> ann -> Bool -> Id -> [Id ] -> [b ] -> b )
5456 -> Pattern ann
5557 -> b
56- patternFold v w b i f c = go
58+ patternFold v w b i f ch c = go
5759 where
5860 go = \ case
5961 PVar sp ann rf nm -> v sp ann rf nm
6062 PWild sp ann rf -> w sp ann rf
6163 PBox sp ann rf pat -> b sp ann rf (go pat)
6264 PInt sp ann rf int -> i sp ann rf int
6365 PFloat sp ann rf doub -> f sp ann rf doub
66+ PChar sp ann rf char -> ch sp ann rf char
6467 PConstr sp ann rf nm tyVarBindsRequested pats -> c sp ann rf nm tyVarBindsRequested (go <$> pats)
6568
6669patternFoldM
@@ -70,10 +73,11 @@ patternFoldM
7073 -> (Span -> ann -> Bool -> b -> m b )
7174 -> (Span -> ann -> Bool -> Int -> m b )
7275 -> (Span -> ann -> Bool -> Double -> m b )
76+ -> (Span -> ann -> Bool -> Char -> m b )
7377 -> (Span -> ann -> Bool -> Id -> [Id ] -> [b ] -> m b )
7478 -> Pattern ann
7579 -> m b
76- patternFoldM v w b i f c = go
80+ patternFoldM v w b i f ch c = go
7781 where
7882 go = \ case
7983 PVar sp ann rf nm -> v sp ann rf nm
@@ -84,6 +88,7 @@ patternFoldM v w b i f c = go
8488 b sp ann rf pat'
8589 PInt sp ann rf int -> i sp ann rf int
8690 PFloat sp ann rf doub -> f sp ann rf doub
91+ PChar sp ann rf char -> ch sp ann rf char
8792 PConstr sp ann rf nm tyVarBindsRequested pats ->
8893 do
8994 pats' <- mapM go pats
@@ -96,16 +101,18 @@ boundVars PWild {} = []
96101boundVars (PBox _ _ _ p) = boundVars p
97102boundVars PInt {} = []
98103boundVars PFloat {} = []
104+ boundVars PChar {} = []
99105boundVars (PConstr _ _ _ _ _ ps) = concatMap boundVars ps
100106
101107boundVarsAndAnnotations :: Pattern a -> [(a , Id )]
102108boundVarsAndAnnotations =
103- patternFold var wild box int flt cstr
109+ patternFold var wild box int flt char cstr
104110 where var _ ty _ ident = [(ty, ident)]
105111 wild _ _ _ = []
106112 box _ _ _ pat = pat
107113 int _ _ _ _ = []
108114 flt _ _ _ _ = []
115+ char _ _ _ _ = []
109116 cstr _ _ _ _ _ = concat
110117
111118ppair :: Span
@@ -138,13 +145,15 @@ instance Freshenable m (Pattern a) where
138145 freshen p@ PWild {} = return p
139146 freshen p@ PInt {} = return p
140147 freshen p@ PFloat {} = return p
148+ freshen p@ PChar {} = return p
141149
142150patRefactored :: Pattern a -> Bool
143151patRefactored (PVar _ _ rf _) = rf
144152patRefactored (PWild _ _ rf) = rf
145153patRefactored (PBox _ _ rf _) = rf
146154patRefactored (PInt _ _ rf _) = rf
147155patRefactored (PFloat _ _ rf _) = rf
156+ patRefactored (PChar _ _ rf _) = rf
148157patRefactored (PConstr _ _ rf _ _ _) = rf
149158
150159instance Rp. Refactorable (Pattern a ) where
0 commit comments