on master help sign in
Restore pattern parser back to 0.15 behavior
commit957a9e77cfaea5ee96a31cdff0e1b9c75f7ff2f2 authorEvan Czaplicki <info@elm-lang.org> dateTue 5 May 2015, 15:49 (11 years ago) parentfa5c6d0
2 files changed+14−1
src/AST/Pattern.hs+8 src/Parse/Pattern.hs+6−1
src/AST/Pattern.hs+8
@@ -48,6 +48,14 @@ list end patterns =
4848 A.at start end (Data (Var.Raw "::") [pattern, list end rest])
4949
5050
51+consMany :: R.Position -> [RawPattern] -> RawPattern
52+consMany end patterns =
53+ let cons hd@(A.A (R.Region start _) _) tl =
54+ A.at start end (Data (Var.Raw "::") [hd, tl])
55+ in
56+ foldr1 cons patterns
57+
58+
5159tuple :: [RawPattern] -> RawPattern'
5260tuple patterns =
5361 Data (Var.Raw ("_Tuple" ++ show (length patterns))) patterns
src/Parse/Pattern.hs+6−1
@@ -104,4 +104,9 @@ patternConstructor =
104104
105105expr :: IParser P.RawPattern
106106expr =
107− asPattern (patternConstructor <|> term) <?> "pattern"
107+ asPattern subPattern <?> "pattern"
108+ where
109+ subPattern =
110+ do patterns <- consSep1 (patternConstructor <|> term)
111+ end <- getMyPosition
112+ return (P.consMany end patterns)