Generalizes #3556 to not suppressing errors in tactic steps either when the parse error is in a later step, as otherwise changes to the end of a proof would affect (correctness or effectiveness of) incrementality of preceding steps. Fixes #4623, in combination with #4643
78 lines
2.1 KiB
Text
78 lines
2.1 KiB
Text
/-! Incremental reuse in `mutual` -/
|
||
|
||
/-! should invalidate body of `b1` only -/
|
||
|
||
mutual
|
||
def b0 : (by dbg_trace "b 0 0"; exact Nat) := (by dbg_trace "b 0 1"; exact 0)
|
||
|
||
def b1 : (by dbg_trace "b 1 0"; exact Nat) := (by dbg_trace "b 1 1"; exact 0)
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
end
|
||
|
||
/-! should invalidate both bodies (and, in current impl, second header) -/
|
||
|
||
-- RESET
|
||
mutual
|
||
def f0 : (by dbg_trace "f 0 0"; exact Nat) := (by dbg_trace "f 0 1"; exact 0)
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
def f1 : (by dbg_trace "f 1 0"; exact Nat) := (by dbg_trace "f 1 1"; exact 0)
|
||
end
|
||
|
||
/-! should invalidate everything but header of `h0` -/
|
||
|
||
-- RESET
|
||
mutual
|
||
def h0 : (by dbg_trace "h 0 0"; exact Nat) := (by dbg_trace "h 0 1"; exact 0)
|
||
def h1 : (by dbg_trace "h 1 0"; exact Nat) := (by dbg_trace "h 1 1"; exact 0)
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
end
|
||
|
||
/-! #4328 incorrect info tree restore led to linter false-positives. -/
|
||
|
||
-- RESET
|
||
def map' {α β} (f : α → β) : List α → List β :=
|
||
List.map f
|
||
--^ collectDiagnostics
|
||
--^ insert: "\n"
|
||
--^ collectDiagnostics
|
||
|
||
/-! Reuse should work through the namespaced decl macro. -/
|
||
-- RESET
|
||
def ns.n : (by dbg_trace "ns 0"; exact Nat) := by
|
||
dbg_trace "ns 1"
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
exact 0
|
||
|
||
/-! Changing the namespace should prohibit def reuse. -/
|
||
-- RESET
|
||
def nt.n : (by dbg_trace "nt 0"; exact Nat) := by
|
||
--^ sync
|
||
--^ change: "t" "u"
|
||
dbg_trace "nt 1"
|
||
exact 0
|
||
|
||
/-! Reuse should support `in`. -/
|
||
-- RESET
|
||
set_option trace.Elab.definition.body true in
|
||
def so : Nat := by
|
||
dbg_trace "so 0"
|
||
dbg_trace "so 1"
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
exact 0
|
||
|
||
/-!
|
||
Incomplete syntax should not suppress errors in previous definitions as that would prevent reuse.
|
||
-/
|
||
-- RESET
|
||
mutual
|
||
def e0 : Nat := doesNotExist
|
||
def e1 : Nat := doesNotExist
|
||
en
|
||
--^ sync
|
||
--^ insert: "d"
|
||
--^ collectDiagnostics
|