on master help sign in
Make it possible to use qualified tags in pattern args
commitf9fabf2d17661444ed524853898c42f2251ffde3 authorEvan Czaplicki <info@elm-lang.org> dateWed 27 Apr 2016, 20:38 (11 years ago) parent328d79e
1 file changed+20−17
src/Parse/Pattern.hs+20−17
src/Parse/Pattern.hs+20−17
@@ -18,23 +18,21 @@ basic =
1818 addLocation $
1919 choice
2020 [ char '_' >> return P.Anything
21− , stringToPattern <$> var
21+ , P.Var <$> lowVar
22+ , chunksToPatterns <$> dotSep1 capVar
2223 , P.Literal <$> Literal.literal
2324 ]
2425 where
25− stringToPattern str =
26− case str of
27− "True" ->
28− P.Literal (L.Boolean True)
26+ chunksToPatterns chunks =
27+ case List.intercalate "." chunks of
28+ "True" ->
29+ P.Literal (L.Boolean True)
2930
30− "False" ->
31− P.Literal (L.Boolean False)
31+ "False" ->
32+ P.Literal (L.Boolean False)
3233
33− c:_ | isUpper c ->
34− P.Data (Var.Raw str) []
35−
36− _ ->
37− P.Var str
34+ name ->
35+ P.Data (Var.Raw name) []
3836
3937
4038asPattern :: IParser P.Raw -> IParser P.Raw
@@ -94,11 +92,16 @@ term =
9492patternConstructor :: IParser P.Raw
9593patternConstructor =
9694 addLocation $
97− do v <- List.intercalate "." <$> dotSep1 capVar
98− case v of
99− "True" -> return $ P.Literal (L.Boolean True)
100− "False" -> return $ P.Literal (L.Boolean False)
101− _ -> P.Data (Var.Raw v) <$> spacePrefix term
95+ do name <- List.intercalate "." <$> dotSep1 capVar
96+ case name of
97+ "True" ->
98+ return $ P.Literal (L.Boolean True)
99+
100+ "False" ->
101+ return $ P.Literal (L.Boolean False)
102+
103+ _ ->
104+ P.Data (Var.Raw name) <$> spacePrefix term
102105
103106
104107expr :: IParser P.Raw