@@ -9,7 +9,7 @@ module Parse.Pattern
99
1010import qualified Data.List as List
1111
12−import qualified AST.Pattern as P
12+import qualified AST.Expression.Source as Src
1313import qualified Elm.Name as N
1414import qualified Parse.Literal as Literal
1515import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
@@ -26,7 +26,7 @@ import qualified Reporting.Region as R
2626-- TERM
2727
2828
29−term :: Parser P.Raw
29+term :: Parser Src.Pattern
3030term =
3131 hint E.Pattern $
3232 do start <- getPosition
@@ -38,27 +38,26 @@ term =
3838 ]
3939
4040
41−termHelp :: R.Position -> Parser P.Raw
41+termHelp :: R.Position -> Parser Src.Pattern
4242termHelp start =
4343 oneOf
4444 [
4545 do Symbol.underscore
4646 end <- getPosition
47− return (A.at start end P.RAnything)
47+ return (A.at start end Src.PAnything)
4848 ,
4949 do name <- Var.lower
5050 end <- getPosition
51− return (A.at start end (P.RVar name))
51+ return (A.at start end (Src.PVar name))
5252 ,
5353 do (maybePrefix, name) <- Var.foreignUpper
5454 end <- getPosition
55− let ctor = P.RCtor (R.Region start end) maybePrefix name []
55+ let ctor = Src.PCtor (R.Region start end) maybePrefix name []
5656 return (A.at start end ctor)
57−
5857 ,
5958 do lit <- Literal.literal
6059 end <- getPosition
61− return (A.at start end (P.RLiteral lit))
60+ return (A.at start end (Src.PLiteral lit))
6261 ]
6362
6463
@@ -68,7 +67,7 @@ termHelp start =
6867-- RECORDS
6968
7069
71−record :: R.Position -> Parser P.Raw
70+record :: R.Position -> Parser Src.Pattern
7271record start =
7372 do Symbol.leftCurly
7473 inContext start E.ExprRecord $
@@ -79,11 +78,11 @@ record start =
7978 recordHelp start [var]
8079 , do Symbol.rightCurly
8180 end <- getPosition
82− return (A.at start end (P.RRecord []))
81+ return (A.at start end (Src.PRecord []))
8382 ]
8483
8584
86−recordHelp :: R.Position -> [A.Located N.Name] -> Parser P.Raw
85+recordHelp :: R.Position -> [A.Located N.Name] -> Parser Src.Pattern
8786recordHelp start vars =
8887 oneOf
8988 [ do Symbol.comma
@@ -93,7 +92,7 @@ recordHelp start vars =
9392 recordHelp start (var:vars)
9493 , do Symbol.rightCurly
9594 end <- getPosition
96− return (A.at start end (P.RRecord vars))
95+ return (A.at start end (Src.PRecord vars))
9796 ]
9897
9998
@@ -101,7 +100,7 @@ recordHelp start vars =
101100-- TUPLES
102101
103102
104−tuple :: R.Position -> Parser P.Raw
103+tuple :: R.Position -> Parser Src.Pattern
105104tuple start =
106105 do Symbol.leftParen
107106 inContext start E.ExprTuple $
@@ -112,11 +111,11 @@ tuple start =
112111 tupleHelp start pattern []
113112 , do Symbol.rightParen
114113 end <- getPosition
115− return (A.at start end P.RUnit)
114+ return (A.at start end Src.PUnit)
116115 ]
117116
118117
119−tupleHelp :: R.Position -> P.Raw -> [P.Raw] -> Parser P.Raw
118+tupleHelp :: R.Position -> Src.Pattern -> [Src.Pattern] -> Parser Src.Pattern
120119tupleHelp start firstPattern revPatterns =
121120 oneOf
122121 [ do Symbol.comma
@@ -131,7 +130,7 @@ tupleHelp start firstPattern revPatterns =
131130
132131 secondPattern : otherPatterns ->
133132 do end <- getPosition
134− return (A.at start end (P.RTuple firstPattern secondPattern otherPatterns))
133+ return (A.at start end (Src.PTuple firstPattern secondPattern otherPatterns))
135134 ]
136135
137136
@@ -139,7 +138,7 @@ tupleHelp start firstPattern revPatterns =
139138-- LIST
140139
141140
142−list :: R.Position -> Parser P.Raw
141+list :: R.Position -> Parser Src.Pattern
143142list start =
144143 do Symbol.leftSquare
145144 inContext start E.PatternList $
@@ -150,11 +149,11 @@ list start =
150149 listHelp start [pattern]
151150 , do Symbol.rightSquare
152151 end <- getPosition
153− return (A.at start end (P.RList []))
152+ return (A.at start end (Src.PList []))
154153 ]
155154
156155
157−listHelp :: R.Position -> [P.Raw] -> Parser P.Raw
156+listHelp :: R.Position -> [Src.Pattern] -> Parser Src.Pattern
158157listHelp start patterns =
159158 oneOf
160159 [ do Symbol.comma
@@ -164,7 +163,7 @@ listHelp start patterns =
164163 listHelp start (pattern:patterns)
165164 , do Symbol.rightSquare
166165 end <- getPosition
167− return (A.at start end (P.RList (reverse patterns)))
166+ return (A.at start end (Src.PList (reverse patterns)))
168167 ]
169168
170169
@@ -172,7 +171,7 @@ listHelp start patterns =
172171-- EXPRESSION
173172
174173
175−expression :: Parser (P.Raw, SPos)
174+expression :: Parser (Src.Pattern, SPos)
176175expression =
177176 hint E.Pattern $
178177 do start <- getPosition
@@ -180,7 +179,7 @@ expression =
180179 exprHelp start [] cTerm
181180
182181
183−exprHelp :: R.Position -> [P.Raw] -> (P.Raw, R.Position, SPos) -> Parser (P.Raw, SPos)
182+exprHelp :: R.Position -> [Src.Pattern] -> (Src.Pattern, R.Position, SPos) -> Parser (Src.Pattern, SPos)
184183exprHelp start patterns (pattern, _end, sPos) =
185184 oneOf
186185 [ do checkSpace sPos
@@ -197,7 +196,7 @@ exprHelp start patterns (pattern, _end, sPos) =
197196 newSpace <- whitespace
198197 let alias = A.at nameStart newEnd name
199198 return
200− ( A.at start newEnd (P.RAlias (List.foldl' cons pattern patterns) alias)
199+ ( A.at start newEnd (Src.PAlias (List.foldl' cons pattern patterns) alias)
201200 , newSpace
202201 )
203202 , return
@@ -207,16 +206,16 @@ exprHelp start patterns (pattern, _end, sPos) =
207206 ]
208207
209208
210−cons :: P.Raw -> P.Raw -> P.Raw
209+cons :: Src.Pattern -> Src.Pattern -> Src.Pattern
211210cons tl@(A.A (R.Region _ end) _) hd@(A.A (R.Region start _) _) =
212− A.at start end (P.RCons hd tl)
211+ A.at start end (Src.PCons hd tl)
213212
214213
215214
216215-- EXPRESSION TERM
217216
218217
219−exprTerm :: SParser P.Raw
218+exprTerm :: SParser Src.Pattern
220219exprTerm =
221220 oneOf
222221 [ do start <- getPosition
@@ -227,7 +226,7 @@ exprTerm =
227226 ]
228227
229228
230−exprTermHelp :: R.Position -> (Maybe N.Name, N.Name) -> [P.Raw] -> SParser P.Raw
229+exprTermHelp :: R.Position -> (Maybe N.Name, N.Name) -> [Src.Pattern] -> SParser Src.Pattern
231230exprTermHelp start pair@(maybePrefix, name) args =
232231 do end <- getPosition
233232 sPos <- whitespace
@@ -236,7 +235,7 @@ exprTermHelp start pair@(maybePrefix, name) args =
236235 arg <- term
237236 exprTermHelp start pair (arg:args)
238237 , return
239− ( A.at start end (P.RCtor (R.Region start end) maybePrefix name (reverse args))
238+ ( A.at start end (Src.PCtor (R.Region start end) maybePrefix name (reverse args))
240239 , end
241240 , sPos
242241 )