@@ -224,7 +224,7 @@ float = Tok.double
224idrisStyle :: MonadicParsing m => IdentifierStyle m
224idrisStyle :: MonadicParsing m => IdentifierStyle m
225idrisStyle = IdentifierStyle _styleName _styleStart _styleLetter _styleReserved Hi.Identifier Hi.ReservedIdentifier
225idrisStyle = IdentifierStyle _styleName _styleStart _styleLetter _styleReserved Hi.Identifier Hi.ReservedIdentifier
226 where _styleName = "Idris"
226 where _styleName = "Idris"
227− _styleStart = satisfy isAlpha
227+ _styleStart = satisfy isAlpha <|> oneOf "_"
228 _styleLetter = satisfy isAlphaNum <|> oneOf "_'."
228 _styleLetter = satisfy isAlphaNum <|> oneOf "_'."
229 _styleReserved = HS.fromList ["let", "in", "data", "codata", "record", "Type",
229 _styleReserved = HS.fromList ["let", "in", "data", "codata", "record", "Type",
230 "do", "dsl", "import", "impossible",
230 "do", "dsl", "import", "impossible",
@@ -262,7 +262,9 @@ reservedOp name = token $ try $
263-- | Parses an identifier as a token
263-- | Parses an identifier as a token
264identifier :: MonadicParsing m => m String
264identifier :: MonadicParsing m => m String
265−identifier = token $ Tok.ident idrisStyle
265+identifier = try(do i <- token $ Tok.ident idrisStyle
266+ when (i == "_") $ unexpected "wildcard"
267-- | Parses an identifier with possible namespace as a name
269-- | Parses an identifier with possible namespace as a name
268iName :: MonadicParsing m => [String] -> m Name
270iName :: MonadicParsing m => [String] -> m Name