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.)
36 lines
573 B
Text
36 lines
573 B
Text
|
||
|
||
structure S :=
|
||
(x y z : Nat := 0)
|
||
|
||
def f1 : Nat × Nat → S → Nat :=
|
||
by {
|
||
intro (x, y);
|
||
intro ⟨a, b, c⟩;
|
||
exact x+y+a
|
||
}
|
||
|
||
theorem ex1 : f1 (10, 20) { x := 10 } = 40 :=
|
||
rfl
|
||
|
||
def f2 : Nat × Nat → S → Nat :=
|
||
by {
|
||
intro (a, b) { y := y, .. };
|
||
exact a+b+y
|
||
}
|
||
|
||
#guard f2 (10, 20) { y := 5 } == 35
|
||
|
||
theorem ex2 : f2 (10, 20) { y := 5 } = 35 :=
|
||
rfl
|
||
|
||
def f3 : Nat × Nat → S → S → Nat :=
|
||
by {
|
||
intro (a, b) { y := y, .. } s;
|
||
exact a+b+y+s.x
|
||
}
|
||
|
||
#guard f3 (10, 20) { y := 5 } { x := 1 } == 36
|
||
|
||
theorem ex3 : f3 (10, 20) { y := 5 } { x := 1 } = 36 :=
|
||
rfl
|