@@ -900,6 +900,9 @@ partial def checkForHiddenUnivLevels (allUserLevelNames : List Name) (preDefs :
900
900
for preDef in preDefs do
901
901
checkPreDef preDef
902
902
903
+ @[noinline]
904
+ def BaseIO.delay (f : Unit → BaseIO α) : BaseIO α := f ()
905
+
903
906
def elabMutualDef (vars : Array Expr) (views : Array DefView) (typeCheckedPromise : IO.Promise SnapshotTree): TermElabM Unit :=
904
907
if isExample views then
905
908
withoutModifyingEnv do
@@ -944,14 +947,16 @@ where
944
947
checkForHiddenUnivLevels allUserLevelNames preDefs
945
948
let preEnv ← getEnv
946
949
if let some postponed ← addPreDefinitions (postponeCheck := true ) preDefs then
950
+ let preEnv := Runtime.markPersistent preEnv
951
+ let postponed := Runtime.markPersistent postponed
947
952
let opts ← getOptions
948
953
let fileName ← getFileName
949
954
let pos := (← getFileMap).toPosition (← getRefPos)
950
955
typeCheckedPromise.resolve <| .mk {
951
956
diagnostics := .empty
952
957
} #[{
953
958
range? := none
954
- task := (← BaseIO.asTask do
959
+ task := (← BaseIO.asTask <| BaseIO.delay fun _ => do
955
960
let mut msgLog := .empty
956
961
if let .error e := preEnv.addDecl opts postponed then
957
962
msgLog := msgLog.add {
@@ -995,7 +1000,7 @@ def elabMutualDef (ds : Array Syntax) : CommandElabM Unit := do
995
1000
throwErrorAt d "invalid use of 'nonrec' modifier in 'mutual' block"
996
1001
let mut view ← mkDefView modifiers d[1 ]
997
1002
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
999
1004
view := { view with headerSnap? := some {
1000
1005
old? := do
1001
1006
-- transitioning from `Context.snap?` to `DefView.headerSnap?` invariant: if the
0 commit comments