on master help sign in
Improve error messages for list
7fd806aAhmad Salim Al-Sibahi
src/Idris/ParseExpr.hs+5−5
@@ -897,16 +897,16 @@ ExprList ::=
897 -}
897 -}
898listExpr :: SyntaxInfo -> IdrisParser PTerm
898listExpr :: SyntaxInfo -> IdrisParser PTerm
899listExpr syn = do lchar '['; fc <- getFC;
899listExpr syn = do lchar '['; fc <- getFC;
900− try (lchar ']' *> return (mkList fc [])) <|> (do
900+ try ((lchar ']' <?> "end of list expression") *> return (mkList fc [])) <|> (do
901− x <- expr syn
901+ x <- expr syn <?> "expression"
902− (do try (lchar '|')
902+ (do try (lchar '|') <?> "list comprehension"
903 qs <- sepBy1 (do_ syn) (lchar ',')
903 qs <- sepBy1 (do_ syn) (lchar ',')
904 lchar ']'
904 lchar ']'
905 return (PDoBlock (map addGuard qs ++
905 return (PDoBlock (map addGuard qs ++
906 [DoExp fc (PApp fc (PRef fc (sUN "return"))
906 [DoExp fc (PApp fc (PRef fc (sUN "return"))
907 [pexp x])]))) <|> (do
907 [pexp x])]))) <|> (do
908− xs <- many (lchar ',' *> expr syn)
908+ xs <- many ((lchar ',' <?> "list element") *> expr syn)
909− lchar ']'
909+ lchar ']' <?> "end of list expression"
910 return (mkList fc (x:xs))))
910 return (mkList fc (x:xs))))
911 <?> "list expression"
911 <?> "list expression"
912 where
912 where