This PR sets up the new integrated test/bench suite. It then migrates all benchmarks and some related tests to the new suite. There's also some documentation and some linting. For now, a lot of the old tests are left alone so this PR doesn't become even larger than it already is. Eventually, all tests should be migrated to the new suite though so there isn't a confusing mix of two systems.
54 lines
1.7 KiB
Text
54 lines
1.7 KiB
Text
import Lean
|
|
|
|
/-- info: test._sparseCasesOn_1 -/
|
|
#guard_msgs in
|
|
run_meta
|
|
Lean.withDeclNameForAuxNaming `test do
|
|
let name ← Lean.Meta.mkSparseCasesOn ``Lean.Expr #[``Lean.Expr.fvar, ``Lean.Expr.sort]
|
|
Lean.logInfo m!"{name}"
|
|
|
|
/--
|
|
info: test._sparseCasesOn_1.{u} {motive : Lean.Expr → Sort u} (t : Lean.Expr)
|
|
(fvar : (fvarId : Lean.FVarId) → motive (Lean.Expr.fvar fvarId))
|
|
(sort : (u : Lean.Level) → motive (Lean.Expr.sort u)) : (Nat.hasNotBit 10 t.ctorIdx → motive t) → motive t
|
|
-/
|
|
#guard_msgs in
|
|
#check test._sparseCasesOn_1
|
|
|
|
/--
|
|
info: theorem test._sparseCasesOn_1.else_eq.{u} : ∀ {motive : Lean.Expr → Sort u} (t : Lean.Expr)
|
|
(fvar : (fvarId : Lean.FVarId) → motive (Lean.Expr.fvar fvarId)) (sort : (u : Lean.Level) → motive (Lean.Expr.sort u))
|
|
(«else» : Nat.hasNotBit 10 t.ctorIdx → motive t) (h : Nat.hasNotBit 10 t.ctorIdx),
|
|
test._sparseCasesOn_1 t fvar sort «else» = «else» h
|
|
-/
|
|
#guard_msgs in
|
|
#print sig test._sparseCasesOn_1.else_eq
|
|
|
|
/-- error: mkSparseCasesOn: unexpected number of universe parameters in `Or.casesOn` -/
|
|
#guard_msgs in
|
|
run_meta
|
|
Lean.withDeclNameForAuxNaming `test do
|
|
let name ← Lean.Meta.mkSparseCasesOn ``Or #[``Or.inl]
|
|
Lean.logInfo m!"{name}"
|
|
|
|
|
|
/- Check that the compiler is producin good code -/
|
|
|
|
set_option trace.Compiler.saveBase true
|
|
|
|
/--
|
|
trace: [Compiler.saveBase] size: 7
|
|
def testDecl motive t fvar sort else.1 : motive lcAny :=
|
|
cases t : motive lcAny
|
|
| Lean.Expr.fvar fvarId =>
|
|
let _x.2 := fvar fvarId;
|
|
return _x.2
|
|
| Lean.Expr.sort u =>
|
|
let _x.3 := sort u;
|
|
return _x.3
|
|
| _ =>
|
|
let _x.4 := else.1 _;
|
|
return _x.4
|
|
-/
|
|
#guard_msgs in
|
|
def testDecl := @test._sparseCasesOn_1
|