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.)
42 lines
647 B
Text
42 lines
647 B
Text
def f : IO Nat := do
|
||
IO.println "foo"
|
||
return 0
|
||
|
||
abbrev M := StateRefT Nat IO
|
||
|
||
def g (a : Nat) : M Unit :=
|
||
pure ()
|
||
|
||
/--
|
||
info: id do
|
||
let a ← liftM f
|
||
g a : M Unit
|
||
-/
|
||
#guard_msgs in
|
||
#check id (α := M Unit) do let a ← f; g a
|
||
|
||
set_option autoLift false
|
||
|
||
set_option pp.mvars false in
|
||
/--
|
||
warning: type mismatch
|
||
f
|
||
has type
|
||
IO Nat : Type
|
||
but is expected to have type
|
||
M ?_ : Type
|
||
---
|
||
info: id do
|
||
let a ← sorryAx (M Nat) true
|
||
g a : M Unit
|
||
-/
|
||
#guard_msgs in
|
||
#check_failure id (α := M Unit) do let a ← f; g a
|
||
|
||
/--
|
||
info: id do
|
||
let a ← liftM f
|
||
g a : M Unit
|
||
-/
|
||
#guard_msgs in
|
||
#check id (α := M Unit) do let a ← liftM f; g a
|