Skip to content

Commit f820121

Browse files
committed
minimalSnapshots for async TC
1 parent aea190b commit f820121

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/Lean/Elab/Command.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ def elabCommandTopLevel (stx : Syntax)
587587
-- TODO: set range?
588588
elabSnap := { range? := none, task := elabPromise.result }
589589
lintSnap := { range? := none, task := lintPromise.result }}
590-
withReader ({ · with snap? := guard (!Language.internal.minimalSnapshots.get (← getOptions)) *> some {
590+
withReader ({ · with snap? := some {
591591
old? := snap.old?.map (·.mapVal (·.bind (·.elabSnap)))
592592
new := elabPromise
593593
}}) do

src/Lean/Elab/MutualDef.lean

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,9 @@ partial def checkForHiddenUnivLevels (allUserLevelNames : List Name) (preDefs :
900900
for preDef in preDefs do
901901
checkPreDef preDef
902902

903+
@[noinline]
904+
def BaseIO.delay (f : Unit → BaseIO α) : BaseIO α := f ()
905+
903906
def elabMutualDef (vars : Array Expr) (views : Array DefView) (typeCheckedPromise : IO.Promise SnapshotTree): TermElabM Unit :=
904907
if isExample views then
905908
withoutModifyingEnv do
@@ -944,14 +947,16 @@ where
944947
checkForHiddenUnivLevels allUserLevelNames preDefs
945948
let preEnv ← getEnv
946949
if let some postponed ← addPreDefinitions (postponeCheck := true) preDefs then
950+
let preEnv := Runtime.markPersistent preEnv
951+
let postponed := Runtime.markPersistent postponed
947952
let opts ← getOptions
948953
let fileName ← getFileName
949954
let pos := (← getFileMap).toPosition (← getRefPos)
950955
typeCheckedPromise.resolve <| .mk {
951956
diagnostics := .empty
952957
} #[{
953958
range? := none
954-
task := (← BaseIO.asTask do
959+
task := (← BaseIO.asTask <| BaseIO.delay fun _ => do
955960
let mut msgLog := .empty
956961
if let .error e := preEnv.addDecl opts postponed then
957962
msgLog := msgLog.add {
@@ -995,7 +1000,7 @@ def elabMutualDef (ds : Array Syntax) : CommandElabM Unit := do
9951000
throwErrorAt d "invalid use of 'nonrec' modifier in 'mutual' block"
9961001
let mut view ← mkDefView modifiers d[1]
9971002
let fullHeaderRef := mkNullNode #[d[0], view.headerRef]
998-
if let some snap := snap? then
1003+
if let some snap := guard (!Language.internal.minimalSnapshots.get (← getOptions)) *> snap? then
9991004
view := { view with headerSnap? := some {
10001005
old? := do
10011006
-- transitioning from `Context.snap?` to `DefView.headerSnap?` invariant: if the

0 commit comments

Comments
 (0)