Many of our tests in `tests/lean/run/` produce output from `#eval` (or `#check`) statements, that is then ignored. This PR tries to capture all the useful output using `#guard_msgs`. I've only done a cursory check that the output is still sane --- there is a chance that some "unchecked" tests have already accumulated regressions and this just cements them! In the other direction, I did identify two rotten tests: * a minor one in `setStructInstNotation.lean`, where a comment says `Set Nat`, but `#check` actually prints `?_`. Weird? * `CompilerProbe.lean` is generating empty output, apparently indicating that something is broken, but I don't know the signficance of this file. In any case, I'll ask about these elsewhere. (This started by noticing that a recent `grind` test file had an untested `trace_state`, and then got carried away.)
32 lines
772 B
Text
32 lines
772 B
Text
import Lean.Elab.Command
|
||
import Lean.Elab.Open
|
||
/-!
|
||
Issue #2291
|
||
|
||
The following example would cause the pretty printer to panic.
|
||
-/
|
||
|
||
set_option trace.compiler.simp true in
|
||
/-- info: [0] -/
|
||
#guard_msgs in
|
||
#eval [0]
|
||
|
||
|
||
/-!
|
||
Fixing the above involved changing `Lean.unresolveNameGlobal`.
|
||
Here, we also verify that we do not pretty print using any aliases that have macro scopes.
|
||
-/
|
||
|
||
open Lean in
|
||
elab "add_bad_alias " n:ident : command => withFreshMacroScope do
|
||
let declName ← Elab.OpenDecl.resolveNameUsingNamespaces [← getCurrNamespace] n
|
||
let badName ← MonadQuotation.addMacroScope `bad
|
||
modify fun s => { s with env := addAlias s.env badName declName }
|
||
|
||
def f := 1
|
||
|
||
add_bad_alias f
|
||
|
||
-- Formerly was info: bad✝ : ℕ
|
||
/-- info: f : Nat -/
|
||
#guard_msgs in #check (f)
|