feat(frontends/lean): remove unnecessary instantiate_all's that were messing with error localization
This commit is contained in:
parent
02d3f7c37c
commit
ededf4fc6c
4 changed files with 23 additions and 3 deletions
|
@ -1586,7 +1586,7 @@ bool elaborator::try_using_begin_end(substitution & subst, expr const & mvar, pr
|
||||||
return false;
|
return false;
|
||||||
ps = proof_state(ps, tail(gs), subst, ngen);
|
ps = proof_state(ps, tail(gs), subst, ngen);
|
||||||
} else {
|
} else {
|
||||||
expr new_ptac = subst.instantiate_all(ptac);
|
expr new_ptac = ptac;
|
||||||
if (auto tac = pre_tactic_to_tactic(new_ptac)) {
|
if (auto tac = pre_tactic_to_tactic(new_ptac)) {
|
||||||
try {
|
try {
|
||||||
proof_state_seq seq = (*tac)(env(), ios(), ps);
|
proof_state_seq seq = (*tac)(env(), ios(), ps);
|
||||||
|
@ -1648,7 +1648,7 @@ void elaborator::solve_unassigned_mvar(substitution & subst, expr mvar, name_set
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto tac = pre_tactic_to_tactic(subst.instantiate_all(*pre_tac))) {
|
if (auto tac = pre_tactic_to_tactic(*pre_tac)) {
|
||||||
bool show_failure = true;
|
bool show_failure = true;
|
||||||
try_using(subst, mvar, ps, *pre_tac, *tac, show_failure);
|
try_using(subst, mvar, ps, *pre_tac, *tac, show_failure);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -38,7 +38,7 @@ optional<expr> elaborate_with_respect_to(environment const & env, io_state const
|
||||||
goals const & gs = s.get_goals();
|
goals const & gs = s.get_goals();
|
||||||
if (empty(gs))
|
if (empty(gs))
|
||||||
return none_expr();
|
return none_expr();
|
||||||
auto ecs = elab(head(gs), ngen.mk_child(), e, report_unassigned);
|
auto ecs = elab(head(gs), ngen.mk_child(), e, report_unassigned);
|
||||||
expr new_e = ecs.first;
|
expr new_e = ecs.first;
|
||||||
buffer<constraint> cs;
|
buffer<constraint> cs;
|
||||||
to_buffer(ecs.second, cs);
|
to_buffer(ecs.second, cs);
|
||||||
|
|
12
tests/lean/change_tac_fail.lean
Normal file
12
tests/lean/change_tac_fail.lean
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import data.list
|
||||||
|
open list
|
||||||
|
|
||||||
|
variable {T : Type}
|
||||||
|
|
||||||
|
theorem append.assoc : ∀ (s t u : list T), s ++ t ++ u = s ++ (t ++ u)
|
||||||
|
| append.assoc nil t u := by esimp
|
||||||
|
| append.assoc (a :: l) t u :=
|
||||||
|
begin
|
||||||
|
change a :: (l ++ t ++ u) = (a :: l) ++ (t ++ a),
|
||||||
|
rewrite append.assoc
|
||||||
|
end
|
8
tests/lean/change_tac_fail.lean.expected.out
Normal file
8
tests/lean/change_tac_fail.lean.expected.out
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
change_tac_fail.lean:10:47: error: type mismatch at application
|
||||||
|
t ++ a
|
||||||
|
term
|
||||||
|
a
|
||||||
|
has type
|
||||||
|
T
|
||||||
|
but is expected to have type
|
||||||
|
list T
|
Loading…
Reference in a new issue