on master help sign in
Fix #1539, properly parse Bools in pattern expressions
4272cbcEvan Czaplicki
src/Parse/Pattern.hs+16−1
@@ -177,11 +177,26 @@ consTerm =
177 oneOf
177 oneOf
178 [ do start <- getPosition
178 [ do start <- getPosition
179 ctor <- qualifiedCapVar
179 ctor <- qualifiedCapVar
180+ case ctor of
181+ "True" -> boolEnd start True
182+ "False" -> boolEnd start False
180− constructorHelp start ctor []
183+ _ -> constructorHelp start ctor []
184+
181 , (,,) <$> term <*> getPosition <*> whitespace
185 , (,,) <$> term <*> getPosition <*> whitespace
182 ]
186 ]
183
187
184
188
189+boolEnd :: R.Position -> Bool -> SParser P.Raw
190+boolEnd start bool =
191+ do end <- getPosition
192+ sPos <- whitespace
193+ return
194+ ( A.at start end $ P.Literal (L.Boolean bool)
195+ , end
196+ , sPos
197+ )
198+
199+
185exprHelp :: R.Position -> [P.Raw] -> (P.Raw, R.Position, SPos) -> Parser (P.Raw, SPos)
200exprHelp :: R.Position -> [P.Raw] -> (P.Raw, R.Position, SPos) -> Parser (P.Raw, SPos)
186exprHelp start patterns (pattern, end, sPos) =
201exprHelp start patterns (pattern, end, sPos) =
187 oneOf
202 oneOf