fix(frontends/lean/elaborator): missing type information when !
operator (aka consume_args) is used
This commit is contained in:
parent
a1006073d4
commit
f0cc17af87
3 changed files with 67 additions and 1 deletions
|
@ -124,7 +124,7 @@ optional<expr> elaborator::mvar_to_meta(expr const & mvar) {
|
|||
/** \brief Store the pair (pos(e), type(r)) in the info_data if m_info_manager is available. */
|
||||
void elaborator::save_type_data(expr const & e, expr const & r) {
|
||||
if (!m_no_info && infom() && pip() &&
|
||||
(is_constant(e) || is_local(e) || is_placeholder(e) || is_as_atomic(e))) {
|
||||
(is_constant(e) || is_local(e) || is_placeholder(e) || is_as_atomic(e) || is_consume_args(e))) {
|
||||
if (auto p = pip()->get_pos_info(e)) {
|
||||
expr t = m_tc[m_relax_main_opaque]->infer(r).first;
|
||||
m_pre_info_data.add_type_info(p->first, p->second, t);
|
||||
|
|
11
tests/lean/interactive/consume_args.input
Normal file
11
tests/lean/interactive/consume_args.input
Normal file
|
@ -0,0 +1,11 @@
|
|||
VISIT consume_args.lean
|
||||
SYNC 7
|
||||
import logic data.nat.basic
|
||||
open nat eq.ops
|
||||
|
||||
theorem tst (a b c : nat) : a + b + c = a + c + b :=
|
||||
calc a + b + c = a + (b + c) : !add.assoc
|
||||
... = a + (c + b) : {!add.comm}
|
||||
... = a + c + b : (!add.assoc)⁻¹
|
||||
WAIT
|
||||
INFO 7
|
55
tests/lean/interactive/consume_args.input.expected.out
Normal file
55
tests/lean/interactive/consume_args.input.expected.out
Normal file
|
@ -0,0 +1,55 @@
|
|||
-- BEGINWAIT
|
||||
-- ENDWAIT
|
||||
-- BEGININFO
|
||||
-- SYMBOL|7|15
|
||||
=
|
||||
-- ACK
|
||||
-- TYPE|7|17
|
||||
ℕ
|
||||
-- ACK
|
||||
-- IDENTIFIER|7|17
|
||||
a
|
||||
-- ACK
|
||||
-- TYPE|7|19
|
||||
ℕ → ℕ → ℕ
|
||||
-- ACK
|
||||
-- SYMBOL|7|19
|
||||
+
|
||||
-- ACK
|
||||
-- TYPE|7|21
|
||||
ℕ
|
||||
-- ACK
|
||||
-- IDENTIFIER|7|21
|
||||
c
|
||||
-- ACK
|
||||
-- TYPE|7|23
|
||||
ℕ → ℕ → ℕ
|
||||
-- ACK
|
||||
-- SYMBOL|7|23
|
||||
+
|
||||
-- ACK
|
||||
-- TYPE|7|25
|
||||
ℕ
|
||||
-- ACK
|
||||
-- IDENTIFIER|7|25
|
||||
b
|
||||
-- ACK
|
||||
-- SYMBOL|7|31
|
||||
(
|
||||
-- ACK
|
||||
-- SYMBOL|7|32
|
||||
!
|
||||
-- ACK
|
||||
-- TYPE|7|33
|
||||
a + c + b = a + (c + b)
|
||||
-- ACK
|
||||
-- IDENTIFIER|7|33
|
||||
nat.add.assoc
|
||||
-- ACK
|
||||
-- TYPE|7|43
|
||||
a + c + b = a + (c + b) → a + (c + b) = a + c + b
|
||||
-- ACK
|
||||
-- SYMBOL|7|43
|
||||
⁻¹
|
||||
-- ACK
|
||||
-- ENDINFO
|
Loading…
Reference in a new issue