on master help sign in
Improve error message when there are unhanded literals in a pattern
commitcd62e8100482d99d0b087d113dac3293058e972b authorEvan Czaplicki <info@elm-lang.org> dateMon 19 Oct 2015, 17:33 (11 years ago) parent829e07f
1 file changed+15−2
src/Nitpick/Pattern.hs+15−2
src/Nitpick/Pattern.hs+15−2
@@ -17,7 +17,7 @@ data Pattern
1717 | Anything
1818 | Literal L.Literal
1919 | AnythingBut (Set.Set L.Literal)
20− deriving (Show, Eq)
20+ deriving (Eq)
2121
2222
2323fromCanonicalPattern :: P.CanonicalPattern -> Pattern
@@ -83,7 +83,20 @@ toString needsParens pattern =
8383 L.toString literal
8484
8585 AnythingBut literalSet ->
86− List.intercalate " " ("<values besides:" : map L.toString (Set.toList literalSet) ++ [">"])
86+ case map L.toString (Set.toList literalSet) of
87+ [] ->
88+ error "should not have an AnythingBut with no literals"
89+
90+ [x] ->
91+ "<values besides " ++ x ++ ">"
92+
93+ [x,y] ->
94+ "<values besides " ++ x ++ " and " ++ y ++ ">"
95+
96+ literals ->
97+ "<values besides "
98+ ++ List.intercalate ", " (init literals)
99+ ++ ", and " ++ last literals ++ ">"
87100
88101
89102addParensIf :: Bool -> String -> String