desugaring record implementation (TODO - dependency)
This commit is contained in:
@@ -457,6 +457,19 @@ nakedBind = do
|
||||
names <- some (withPos varname)
|
||||
pure $ map (\(pos,name) => (BI pos name Explicit Many, RImplicit pos)) names
|
||||
|
||||
export
|
||||
parseRecord : Parser Decl
|
||||
parseRecord = do
|
||||
fc <- getPos
|
||||
keyword "record"
|
||||
name <- uident
|
||||
teles <- many $ ebind <|> nakedBind
|
||||
keyword "where"
|
||||
cname <- optional $ keyword "constructor" *> uident
|
||||
decls <- startBlock $ manySame $ parseSig
|
||||
pure $ Record fc name (join teles) cname decls
|
||||
|
||||
|
||||
export
|
||||
parseClass : Parser Decl
|
||||
parseClass = do
|
||||
@@ -487,7 +500,7 @@ export
|
||||
parseDecl : Parser Decl
|
||||
parseDecl = parseMixfix <|> parsePType <|> parsePFunc
|
||||
<|> parseNorm <|> parseData <|> parseSig <|> parseDef
|
||||
<|> parseClass <|> parseInstance
|
||||
<|> parseClass <|> parseInstance <|> parseRecord
|
||||
|
||||
|
||||
export
|
||||
|
||||
Reference in New Issue
Block a user