feat: normalize free variable ids before saving LCNF code in the environment
This commit is contained in:
parent
8cca2ea24e
commit
bb1e94de82
2 changed files with 12 additions and 2 deletions
|
|
@ -76,7 +76,9 @@ def run (declNames : Array Name) : CompilerM (Array Decl) := withAtLeastMaxRecDe
|
|||
withPhase pass.phase <| checkpoint pass.name decls
|
||||
if (← Lean.isTracingEnabledFor `Compiler.result) then
|
||||
for decl in decls do
|
||||
Lean.addTrace `Compiler.result m!"size: {decl.size}\n{← ppDecl decl}"
|
||||
-- We display the declaration saved in the environment because the names have been normalized
|
||||
let some decl' ← getDeclAt? decl.name .base | unreachable!
|
||||
Lean.addTrace `Compiler.result m!"size: {decl.size}\n{← ppDecl' decl'}"
|
||||
return decls
|
||||
|
||||
end PassManager
|
||||
|
|
|
|||
|
|
@ -54,8 +54,16 @@ def getDeclAt? (declName : Name) (phase : Phase) : CoreM (Option Decl) :=
|
|||
def getDecl? (declName : Name) : CompilerM (Option Decl) := do
|
||||
getDeclAt? declName (← getPhase)
|
||||
|
||||
def normalizeFVarIds (decl : Decl) : CoreM Decl := do
|
||||
let ngenSaved ← getNGen
|
||||
setNGen {}
|
||||
try
|
||||
CompilerM.run <| decl.internalize
|
||||
finally
|
||||
setNGen ngenSaved
|
||||
|
||||
def saveBase : Pass :=
|
||||
.mkPerDeclaration `saveBase (fun decl => do decl.saveBase; return decl) .base
|
||||
.mkPerDeclaration `saveBase (fun decl => do (← normalizeFVarIds decl).saveBase; return decl) .base
|
||||
|
||||
def forEachDecl (f : Decl → CoreM Unit) : CoreM Unit := do
|
||||
let env ← getEnv
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue