@@ -448,7 +448,9 @@ def ofKernelEnv (env : Kernel.Environment) : Environment :=
448
448
449
449
@[export lean_elab_environment_to_kernel_env]
450
450
def toKernelEnv (env : Environment) : Kernel.Environment :=
451
- env.checked.get
451
+ -- TODO: should just be the following when we store extension data in `checked`
452
+ --env.checked.get
453
+ { env.checked.get with extensions := env.checkedWithoutAsync.extensions }
452
454
453
455
/-- Consistently updates synchronous and asynchronous parts of the environment without blocking. -/
454
456
private def modifyCheckedAsync (env : Environment) (f : Kernel.Environment → Kernel.Environment) : Environment :=
@@ -495,7 +497,7 @@ def const2ModIdx (env : Environment) : Std.HashMap Name ModuleIdx :=
495
497
-- only needed for the lakefile.lean cache
496
498
@[export lake_environment_add]
497
499
private def lakeAdd (env : Environment) (cinfo : ConstantInfo) : Environment :=
498
- { env with checked := .pure <| env.checked.get.add cinfo }
500
+ env.setCheckedSync <| env.checked.get.add cinfo
499
501
500
502
/--
501
503
Save an extra constant name that is used to populate `const2ModIdx` when we import
@@ -864,22 +866,22 @@ opaque EnvExtensionInterfaceImp : EnvExtensionInterface
864
866
def EnvExtension (σ : Type ) : Type := EnvExtensionInterfaceImp.ext σ
865
867
866
868
private def ensureExtensionsArraySize (env : Environment) : IO Environment := do
867
- let exts ← EnvExtensionInterfaceImp.ensureExtensionsSize env.checked.get .extensions
869
+ let exts ← EnvExtensionInterfaceImp.ensureExtensionsSize env.checkedWithoutAsync .extensions
868
870
return env.modifyCheckedAsync ({ · with extensions := exts })
869
871
870
872
namespace EnvExtension
871
873
instance {σ} [s : Inhabited σ] : Inhabited (EnvExtension σ) := EnvExtensionInterfaceImp.inhabitedExt s
872
874
875
+ -- TODO: store extension state in `checked`
876
+
873
877
def setState {σ : Type } (ext : EnvExtension σ) (env : Environment) (s : σ) : Environment :=
874
- let checked := env.checked.get
875
- env.setCheckedSync { checked with extensions := EnvExtensionInterfaceImp.setState ext checked.extensions s }
878
+ { env with checkedWithoutAsync.extensions := EnvExtensionInterfaceImp.setState ext env.checkedWithoutAsync.extensions s }
876
879
877
880
def modifyState {σ : Type } (ext : EnvExtension σ) (env : Environment) (f : σ → σ) : Environment :=
878
- let checked := env.checked.get
879
- env.setCheckedSync { checked with extensions := EnvExtensionInterfaceImp.modifyState ext checked.extensions f }
881
+ { env with checkedWithoutAsync.extensions := EnvExtensionInterfaceImp.modifyState ext env.checkedWithoutAsync.extensions f }
880
882
881
883
def getState {σ : Type } [Inhabited σ] (ext : EnvExtension σ) (env : Environment) : σ :=
882
- EnvExtensionInterfaceImp.getState ext env.checked.get .extensions
884
+ EnvExtensionInterfaceImp.getState ext env.checkedWithoutAsync .extensions
883
885
884
886
end EnvExtension
885
887
@@ -1466,7 +1468,7 @@ def getNamespaceSet (env : Environment) : NameSSet :=
1466
1468
1467
1469
@[export lean_elab_environment_update_base_after_kernel_add]
1468
1470
private def updateBaseAfterKernelAdd (env : Environment) (kernel : Kernel.Environment) : Environment :=
1469
- env.setCheckedSync kernel
1471
+ env.setCheckedSync { kernel with extensions := env.checkedWithoutAsync.extensions }
1470
1472
1471
1473
@[export lean_display_stats]
1472
1474
def displayStats (env : Environment) : IO Unit := do
0 commit comments