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.)
51 lines
1 KiB
Text
51 lines
1 KiB
Text
namespace Ex1
|
||
def f (x : Nat) : Nat := by
|
||
cases x with
|
||
| zero => exact 1
|
||
| succ x' =>
|
||
apply Nat.mul 2
|
||
exact f x'
|
||
|
||
#guard f 10 == 1024
|
||
|
||
example : f x.succ = 2 * f x := by rw [f]; rfl
|
||
end Ex1
|
||
|
||
namespace Ex2
|
||
inductive Foo where
|
||
| mk : List Foo → Foo
|
||
|
||
mutual
|
||
def g (x : Foo) : Nat := by
|
||
cases x with
|
||
| mk xs => exact gs xs
|
||
|
||
def gs (xs : List Foo) : Nat := by
|
||
cases xs with
|
||
| nil => exact 1
|
||
| cons x xs =>
|
||
apply Nat.add
|
||
exact g x
|
||
exact gs xs
|
||
end
|
||
end Ex2
|
||
|
||
namespace Ex3
|
||
|
||
inductive Foo where
|
||
| a | b | c
|
||
| pair: Foo × Foo → Foo
|
||
|
||
def Foo.deq (a b : Foo) : Decidable (a = b) := by
|
||
cases a <;> cases b
|
||
any_goals apply isFalse Foo.noConfusion
|
||
any_goals apply isTrue rfl
|
||
case pair a b =>
|
||
let (a₁, a₂) := a
|
||
let (b₁, b₂) := b
|
||
exact match deq a₁ b₁, deq a₂ b₂ with
|
||
| isTrue h₁, isTrue h₂ => isTrue (by rw [h₁,h₂])
|
||
| isFalse h₁, _ => isFalse (fun h => by cases h; cases (h₁ rfl))
|
||
| _, isFalse h₂ => isFalse (fun h => by cases h; cases (h₂ rfl))
|
||
|
||
end Ex3
|