Some eliminators (such as `False.rec`) have an explicit motive argument. The `elabAsElim` elaborator assumed that all motives are implicit. If the explicit motive argument is `_`, then it uses the elab-as-elim procedure, and otherwise it falls back to the standard app elaborator. Furthermore, if an explicit elaborator is not provided, it falls back to treating the elaborator as being implicit, which is convenient for writing `h.rec` rather than `h.rec _`. Rationale: for `False.rec`, this simulates it having an implicit motive, and also motives are generally not going to be available in the expected type. Closes #4347
16 lines
298 B
Text
16 lines
298 B
Text
import Lean
|
|
|
|
inductive MyEmpty
|
|
|
|
def f (x : MyEmpty) : Nat :=
|
|
MyEmpty.casesOn _ x
|
|
|
|
set_option trace.Compiler.result true
|
|
/--
|
|
info: [Compiler.result] size: 0
|
|
def f._redArg : Nat :=
|
|
⊥
|
|
[Compiler.result] size: 0 def f x : Nat := ⊥
|
|
-/
|
|
#guard_msgs in
|
|
run_meta Lean.Compiler.compile #[``f]
|