fix(frontends/lean/elaborator): implicit terms are marked as inaccessible in patterns

This commit is contained in:
Leonardo de Moura 2016-08-28 07:34:04 -07:00
parent 0ed61c97c9
commit b37b4f3dc8

View file

@ -807,6 +807,9 @@ optional<expr> elaborator::visit_app_propagate_expected(expr const & fn, buffer<
new_arg = mk_instance(d, ref);
else
new_arg = mk_metavar(d);
// implicit arguments are tagged as inaccessible in patterns
if (m_in_pattern)
new_arg = copy_tag(ref, mk_inaccessible(new_arg));
} else if (i < args.size()) {
// explicit argument
i++;
@ -908,6 +911,9 @@ expr elaborator::visit_default_app_core(expr const & _fn, arg_mask amask, buffer
new_arg = mk_instance(d, ref);
else
new_arg = mk_metavar(d);
// implicit arguments are tagged as inaccessible in patterns
if (m_in_pattern)
new_arg = copy_tag(ref, mk_inaccessible(new_arg));
} else if (i < args.size()) {
// explicit argument
expr ref_arg = args[i];