@@ -9,7 +9,7 @@ module Parse.Pattern
10import qualified Data.List as List
10import qualified Data.List as List
12−import qualified AST.Pattern as P
12+import qualified AST.Expression.Source as Src
13import qualified Elm.Name as N
13import qualified Elm.Name as N
14import qualified Parse.Literal as Literal
14import qualified Parse.Literal as Literal
15import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
15import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
@@ -26,7 +26,7 @@ import qualified Reporting.Region as R
29−term :: Parser P.Raw
29+term :: Parser Src.Pattern
31 hint E.Pattern $
31 hint E.Pattern $
32 do start <- getPosition
32 do start <- getPosition
@@ -38,27 +38,26 @@ term =
41−termHelp :: R.Position -> Parser P.Raw
41+termHelp :: R.Position -> Parser Src.Pattern
42termHelp start =
42termHelp start =
45 do Symbol.underscore
45 do Symbol.underscore
46 end <- getPosition
46 end <- getPosition
47− return (A.at start end P.RAnything)
47+ return (A.at start end Src.PAnything)
49 do name <- Var.lower
49 do name <- Var.lower
50 end <- getPosition
50 end <- getPosition
51− return (A.at start end (P.RVar name))
51+ return (A.at start end (Src.PVar name))
53 do (maybePrefix, name) <- Var.foreignUpper
53 do (maybePrefix, name) <- Var.foreignUpper
54 end <- getPosition
54 end <- getPosition
55− let ctor = P.RCtor (R.Region start end) maybePrefix name []
55+ let ctor = Src.PCtor (R.Region start end) maybePrefix name []
56 return (A.at start end ctor)
56 return (A.at start end ctor)
59 do lit <- Literal.literal
58 do lit <- Literal.literal
60 end <- getPosition
59 end <- getPosition
61− return (A.at start end (P.RLiteral lit))
60+ return (A.at start end (Src.PLiteral lit))
@@ -68,7 +67,7 @@ termHelp start =
71−record :: R.Position -> Parser P.Raw
70+record :: R.Position -> Parser Src.Pattern
72record start =
71record start =
73 do Symbol.leftCurly
72 do Symbol.leftCurly
74 inContext start E.ExprRecord $
73 inContext start E.ExprRecord $
@@ -79,11 +78,11 @@ record start =
79 recordHelp start [var]
78 recordHelp start [var]
80 , do Symbol.rightCurly
79 , do Symbol.rightCurly
81 end <- getPosition
80 end <- getPosition
82− return (A.at start end (P.RRecord []))
81+ return (A.at start end (Src.PRecord []))
86−recordHelp :: R.Position -> [A.Located N.Name] -> Parser P.Raw
85+recordHelp :: R.Position -> [A.Located N.Name] -> Parser Src.Pattern
87recordHelp start vars =
86recordHelp start vars =
89 [ do Symbol.comma
88 [ do Symbol.comma
@@ -93,7 +92,7 @@ recordHelp start vars =
93 recordHelp start (var:vars)
92 recordHelp start (var:vars)
94 , do Symbol.rightCurly
93 , do Symbol.rightCurly
95 end <- getPosition
94 end <- getPosition
96− return (A.at start end (P.RRecord vars))
95+ return (A.at start end (Src.PRecord vars))
@@ -101,7 +100,7 @@ recordHelp start vars =
104−tuple :: R.Position -> Parser P.Raw
103+tuple :: R.Position -> Parser Src.Pattern
105tuple start =
104tuple start =
106 do Symbol.leftParen
105 do Symbol.leftParen
107 inContext start E.ExprTuple $
106 inContext start E.ExprTuple $
@@ -112,11 +111,11 @@ tuple start =
112 tupleHelp start pattern []
111 tupleHelp start pattern []
113 , do Symbol.rightParen
112 , do Symbol.rightParen
114 end <- getPosition
113 end <- getPosition
115− return (A.at start end P.RUnit)
114+ return (A.at start end Src.PUnit)
119−tupleHelp :: R.Position -> P.Raw -> [P.Raw] -> Parser P.Raw
118+tupleHelp :: R.Position -> Src.Pattern -> [Src.Pattern] -> Parser Src.Pattern
120tupleHelp start firstPattern revPatterns =
119tupleHelp start firstPattern revPatterns =
122 [ do Symbol.comma
121 [ do Symbol.comma
@@ -131,7 +130,7 @@ tupleHelp start firstPattern revPatterns =
132 secondPattern : otherPatterns ->
131 secondPattern : otherPatterns ->
133 do end <- getPosition
132 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))
@@ -139,7 +138,7 @@ tupleHelp start firstPattern revPatterns =
142−list :: R.Position -> Parser P.Raw
141+list :: R.Position -> Parser Src.Pattern
143list start =
142list start =
144 do Symbol.leftSquare
143 do Symbol.leftSquare
145 inContext start E.PatternList $
144 inContext start E.PatternList $
@@ -150,11 +149,11 @@ list start =
150 listHelp start [pattern]
149 listHelp start [pattern]
151 , do Symbol.rightSquare
150 , do Symbol.rightSquare
152 end <- getPosition
151 end <- getPosition
153− return (A.at start end (P.RList []))
152+ return (A.at start end (Src.PList []))
157−listHelp :: R.Position -> [P.Raw] -> Parser P.Raw
156+listHelp :: R.Position -> [Src.Pattern] -> Parser Src.Pattern
158listHelp start patterns =
157listHelp start patterns =
160 [ do Symbol.comma
159 [ do Symbol.comma
@@ -164,7 +163,7 @@ listHelp start patterns =
164 listHelp start (pattern:patterns)
163 listHelp start (pattern:patterns)
165 , do Symbol.rightSquare
164 , do Symbol.rightSquare
166 end <- getPosition
165 end <- getPosition
167− return (A.at start end (P.RList (reverse patterns)))
166+ return (A.at start end (Src.PList (reverse patterns)))
@@ -172,7 +171,7 @@ listHelp start patterns =
172-- EXPRESSION
171-- EXPRESSION
175−expression :: Parser (P.Raw, SPos)
174+expression :: Parser (Src.Pattern, SPos)
176expression =
175expression =
177 hint E.Pattern $
176 hint E.Pattern $
178 do start <- getPosition
177 do start <- getPosition
@@ -180,7 +179,7 @@ expression =
180 exprHelp start [] cTerm
179 exprHelp start [] cTerm
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)
184exprHelp start patterns (pattern, _end, sPos) =
183exprHelp start patterns (pattern, _end, sPos) =
186 [ do checkSpace sPos
185 [ do checkSpace sPos
@@ -197,7 +196,7 @@ exprHelp start patterns (pattern, _end, sPos) =
197 newSpace <- whitespace
196 newSpace <- whitespace
198 let alias = A.at nameStart newEnd name
197 let alias = A.at nameStart newEnd name
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)
201 , newSpace
200 , newSpace
@@ -207,16 +206,16 @@ exprHelp start patterns (pattern, _end, sPos) =
210−cons :: P.Raw -> P.Raw -> P.Raw
209+cons :: Src.Pattern -> Src.Pattern -> Src.Pattern
211cons tl@(A.A (R.Region _ end) _) hd@(A.A (R.Region start _) _) =
210cons 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)
216-- EXPRESSION TERM
215-- EXPRESSION TERM
219−exprTerm :: SParser P.Raw
218+exprTerm :: SParser Src.Pattern
220exprTerm =
219exprTerm =
222 [ do start <- getPosition
221 [ do start <- getPosition
@@ -227,7 +226,7 @@ exprTerm =
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
231exprTermHelp start pair@(maybePrefix, name) args =
230exprTermHelp start pair@(maybePrefix, name) args =
232 do end <- getPosition
231 do end <- getPosition
233 sPos <- whitespace
232 sPos <- whitespace
@@ -236,7 +235,7 @@ exprTermHelp start pair@(maybePrefix, name) args =
236 arg <- term
235 arg <- term
237 exprTermHelp start pair (arg:args)
236 exprTermHelp start pair (arg:args)
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))