on master help sign in
Restore pattern parser back to 0.15 behavior
957a9e7Evan Czaplicki
src/AST/Pattern.hs+8
@@ -48,6 +48,14 @@ list end patterns =
48 A.at start end (Data (Var.Raw "::") [pattern, list end rest])
48 A.at start end (Data (Var.Raw "::") [pattern, list end rest])
49
49
50
50
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+
51tuple :: [RawPattern] -> RawPattern'
59tuple :: [RawPattern] -> RawPattern'
52tuple patterns =
60tuple patterns =
53 Data (Var.Raw ("_Tuple" ++ show (length patterns))) patterns
61 Data (Var.Raw ("_Tuple" ++ show (length patterns))) patterns
src/Parse/Pattern.hs+6−1
@@ -104,4 +104,9 @@ patternConstructor =
104
104
105expr :: IParser P.RawPattern
105expr :: IParser P.RawPattern
106expr =
106expr =
107+ asPattern subPattern <?> "pattern"
108+ where
109+ subPattern =
107− asPattern (patternConstructor <|> term) <?> "pattern"
110+ do patterns <- consSep1 (patternConstructor <|> term)
111+ end <- getMyPosition
112+ return (P.consMany end patterns)