on master help sign in
Improve error message when there are unhanded literals in a pattern
cd62e81Evan Czaplicki
src/Nitpick/Pattern.hs+15−2
@@ -17,7 +17,7 @@ data Pattern
17 | Anything
17 | Anything
18 | Literal L.Literal
18 | Literal L.Literal
19 | AnythingBut (Set.Set L.Literal)
19 | AnythingBut (Set.Set L.Literal)
20− deriving (Show, Eq)
20+ deriving (Eq)
21
21
22
22
23fromCanonicalPattern :: P.CanonicalPattern -> Pattern
23fromCanonicalPattern :: P.CanonicalPattern -> Pattern
@@ -83,7 +83,20 @@ toString needsParens pattern =
83 L.toString literal
83 L.toString literal
84
84
85 AnythingBut literalSet ->
85 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 ++ ">"
87
100
88
101
89addParensIf :: Bool -> String -> String
102addParensIf :: Bool -> String -> String