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.)
39 lines
684 B
Text
39 lines
684 B
Text
import Lean
|
||
|
||
open Lean
|
||
|
||
def f (x : Nat) : Nat :=
|
||
let y := match x with
|
||
| 0 => 1
|
||
| x + 1 => 2 * x
|
||
match y with
|
||
| 0 => 2
|
||
| z+1 => z + y + 2
|
||
|
||
set_option trace.Compiler true
|
||
|
||
def g (x : Nat) : Bool :=
|
||
let pred? := match x with
|
||
| 0 => none
|
||
| y+1 => some y
|
||
match pred? with
|
||
| none => true
|
||
| some _ => false
|
||
|
||
|
||
abbrev TupleNTyp : Nat → Type 1
|
||
| 0 => Type
|
||
| n + 1 => Type → (TupleNTyp n)
|
||
|
||
noncomputable abbrev TupleN : (n : Fin 1) → TupleNTyp n.val
|
||
| 0 => Unit × Unit
|
||
|
||
set_option pp.proofs true
|
||
run_meta Compiler.compile #[``TupleN]
|
||
|
||
|
||
def userControlled (a b : Nat) :=
|
||
let f := fun _ => a
|
||
f () + b
|
||
|
||
run_meta Compiler.compile #[``userControlled]
|