derive Show and Eq, improvements to LSP
This commit is contained in:
@@ -16,6 +16,7 @@ import Lib.Prettier
|
||||
import Lib.Types
|
||||
import Lib.Util
|
||||
import Lib.Erasure
|
||||
import Lib.Derive
|
||||
|
||||
dumpEnv : Context -> M String
|
||||
dumpEnv ctx =
|
||||
@@ -529,6 +530,17 @@ processRecord ns recordFC (nameFC, nm) tele cname decls = do
|
||||
let deps = ((name, RApp fc (RVar fc pname) (RVar fc "$self") Explicit) :: deps)
|
||||
processFields autoPat tail deps rest
|
||||
|
||||
processDerive : String → FC → FC × String → (FC × String) → M Unit
|
||||
processDerive ns fc (clFC, clName) (fc, name) = do
|
||||
case clName of
|
||||
"Eq" => do
|
||||
decls <- deriveEq fc name
|
||||
for_ decls $ processDecl ns
|
||||
"Show" => do
|
||||
decls <- deriveShow fc name
|
||||
for_ decls $ processDecl ns
|
||||
_ => error fc "derive \{clName} is not supported"
|
||||
|
||||
processExports : String → FC → List (FC × String) → M Unit
|
||||
processExports ns fc names = do
|
||||
top <- getTop
|
||||
@@ -542,6 +554,7 @@ processExports ns fc names = do
|
||||
-- currently mixfix registration is handled in the parser
|
||||
-- since we now run a decl at a time we could do it here.
|
||||
processDecl ns (PMixFix _ _ _ _) = pure MkUnit
|
||||
processDecl ns (DDerive fc tclass name) = processDerive ns fc tclass name
|
||||
processDecl ns (TypeSig fc names tm) = processTypeSig ns fc names tm
|
||||
processDecl ns (PType fc nm ty) = processPrimType ns fc nm ty
|
||||
processDecl ns (PFunc fc nm used ty src) = processPrimFn ns fc nm used ty src
|
||||
|
||||
Reference in New Issue
Block a user