File tree Expand file tree Collapse file tree 3 files changed +11
-4
lines changed
Expand file tree Collapse file tree 3 files changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ def mkRecOnName (indDeclName : Name) : Name := Name.mkStr indDeclName recOnSuf
2323def mkBRecOnName (indDeclName : Name) : Name := Name.mkStr indDeclName brecOnSuffix
2424def mkBelowName (indDeclName : Name) : Name := Name.mkStr indDeclName belowSuffix
2525
26- builtin_initialize auxRecExt : TagDeclarationExtension ← mkTagDeclarationExtension (asyncMode := .local )
26+ builtin_initialize auxRecExt : TagDeclarationExtension ← mkTagDeclarationExtension (asyncMode := .async .mainEnv )
2727
2828def markAuxRecursor (env : Environment) (declName : Name) : Environment :=
2929 auxRecExt.tag env declName
@@ -49,7 +49,7 @@ def isRecOnRecursor (env : Environment) (declName : Name) : Bool :=
4949def isBRecOnRecursor (env : Environment) (declName : Name) : Bool :=
5050 isAuxRecursorWithSuffix env declName brecOnSuffix
5151
52- private builtin_initialize sparseCasesOnExt : TagDeclarationExtension ← mkTagDeclarationExtension (asyncMode := .local )
52+ private builtin_initialize sparseCasesOnExt : TagDeclarationExtension ← mkTagDeclarationExtension (asyncMode := .async .mainEnv )
5353
5454def markSparseCasesOn (env : Environment) (declName : Name) : Environment :=
5555 sparseCasesOnExt.tag env declName
Original file line number Diff line number Diff line change @@ -97,6 +97,8 @@ def mkTagDeclarationExtension (name : Name := by exact decl_name%)
9797 addEntryFn := fun s n => s.insert n,
9898 toArrayFn := fun es => es.toArray.qsort Name.quickLt
9999 asyncMode
100+ replay? := some <|
101+ SimplePersistentEnvExtension.replayOfFilter (!·.contains ·) (fun s n => s.insert n)
100102 }
101103
102104namespace TagDeclarationExtension
Original file line number Diff line number Diff line change @@ -439,6 +439,12 @@ also `AsyncContext.declPrefix`.
439439private def AsyncContext.mayContain (ctx : AsyncContext) (n : Name) : Bool :=
440440 ctx.declPrefix.isPrefixOf <| privateToUserName n.eraseMacroScopes
441441
442+ private def AsyncContext.descr (ctx : AsyncContext) : String :=
443+ if let (n :: _) := ctx.realizingStack then
444+ s! "realization context '{ n} '"
445+ else
446+ s! "async context '{ ctx.declPrefix} '"
447+
442448/--
443449Constant info and environment extension states eventually resulting from async elaboration.
444450-/
@@ -1384,8 +1390,7 @@ def modifyState {σ : Type} (ext : EnvExtension σ) (env : Environment) (f : σ
13841390 match asyncMode with
13851391 | .mainOnly =>
13861392 if let some asyncCtx := env.asyncCtx? then
1387- return panic! s! "environment extension is marked as `mainOnly` but used in \
1388- {if env.isRealizing then "realization" else "async" } context '{ asyncCtx.declPrefix} '"
1393+ return panic! s! "environment extension is marked as `mainOnly` but used in { asyncCtx.descr} "
13891394 return { env with base.private.extensions := unsafe ext.modifyStateImpl env.base.private.extensions f }
13901395 | .local =>
13911396 return { env with base.private.extensions := unsafe ext.modifyStateImpl env.base.private.extensions f }
You can’t perform that action at this time.
0 commit comments