on master help sign in
Slightly improve errors for issue #513
15d87f2Evan Czaplicki
compiler/Parse/Helpers.hs+5−3
@@ -79,9 +79,11 @@ innerVarChar :: IParser Char
79innerVarChar = alphaNum <|> char '_' <|> char '\'' <?> ""
79innerVarChar = alphaNum <|> char '_' <|> char '\'' <?> ""
80
80
81makeVar :: IParser Char -> IParser String
81makeVar :: IParser Char -> IParser String
82+makeVar p = do
82−makeVar p = do v <- (:) <$> p <*> many innerVarChar
83+ v <- (:) <$> p <*> many innerVarChar
83− guard (v `notElem` reserveds)
84+ if v `elem` reserveds
85+ then fail $ "unexpected keyword '" ++ v ++ "', variables cannot be keywords"
84− return v
86+ else return v
85
87
86reserved :: String -> IParser String
88reserved :: String -> IParser String
87reserved word =
89reserved word =