lean4-htt/tests/elab/sparseCasesOn.lean
Garmelon 08eb78a5b2
chore: switch to new test/bench suite (#12590)
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.
2026-02-25 13:51:53 +00:00

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