Skip to content

Commit c00d31f

Browse files
committed
chore: ensure isCasesOnLike works non-locally
1 parent 53730ae commit c00d31f

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

src/Lean/AuxRecursor.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def mkRecOnName (indDeclName : Name) : Name := Name.mkStr indDeclName recOnSuf
2323
def mkBRecOnName (indDeclName : Name) : Name := Name.mkStr indDeclName brecOnSuffix
2424
def 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

2828
def markAuxRecursor (env : Environment) (declName : Name) : Environment :=
2929
auxRecExt.tag env declName
@@ -49,7 +49,7 @@ def isRecOnRecursor (env : Environment) (declName : Name) : Bool :=
4949
def 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

5454
def markSparseCasesOn (env : Environment) (declName : Name) : Environment :=
5555
sparseCasesOnExt.tag env declName

src/Lean/EnvExtension.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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

102104
namespace TagDeclarationExtension

src/Lean/Environment.lean

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,12 @@ also `AsyncContext.declPrefix`.
439439
private 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
/--
443449
Constant 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 }

0 commit comments

Comments
 (0)