fix(frontends/lean/pp): pp was not taking into account new namespace name resolution rules, fixes #216
This commit is contained in:
parent
3657d4c3ab
commit
f863d82e69
4 changed files with 27 additions and 1 deletions
|
@ -274,10 +274,23 @@ auto pretty_fn::pp_sort(expr const & e) -> result {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
optional<name> pretty_fn::is_aliased(name const & n) const {
|
||||||
|
if (auto it = is_expr_aliased(m_env, n)) {
|
||||||
|
// must check if we are not shadow by current namespace
|
||||||
|
for (name const & ns : get_namespaces(m_env)) {
|
||||||
|
if (!ns.is_anonymous() && m_env.find(ns + *it))
|
||||||
|
return optional<name>();
|
||||||
|
}
|
||||||
|
return it;
|
||||||
|
} else {
|
||||||
|
return optional<name>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto pretty_fn::pp_const(expr const & e) -> result {
|
auto pretty_fn::pp_const(expr const & e) -> result {
|
||||||
name n = const_name(e);
|
name n = const_name(e);
|
||||||
if (!m_full_names) {
|
if (!m_full_names) {
|
||||||
if (auto it = is_expr_aliased(m_env, n)) {
|
if (auto it = is_aliased(n)) {
|
||||||
n = *it;
|
n = *it;
|
||||||
} else {
|
} else {
|
||||||
for (name const & ns : get_namespaces(m_env)) {
|
for (name const & ns : get_namespaces(m_env)) {
|
||||||
|
|
|
@ -54,6 +54,7 @@ private:
|
||||||
bool is_implicit(expr const & f);
|
bool is_implicit(expr const & f);
|
||||||
bool is_prop(expr const & e);
|
bool is_prop(expr const & e);
|
||||||
bool has_implicit_args(expr const & f);
|
bool has_implicit_args(expr const & f);
|
||||||
|
optional<name> is_aliased(name const & n) const;
|
||||||
|
|
||||||
format pp_binder_block(buffer<name> const & names, expr const & type, binder_info const & bi);
|
format pp_binder_block(buffer<name> const & names, expr const & type, binder_info const & bi);
|
||||||
format pp_binders(buffer<expr> const & locals);
|
format pp_binders(buffer<expr> const & locals);
|
||||||
|
|
11
tests/lean/alias2.lean
Normal file
11
tests/lean/alias2.lean
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import logic
|
||||||
|
|
||||||
|
namespace foo
|
||||||
|
definition t := true
|
||||||
|
end foo
|
||||||
|
open foo
|
||||||
|
|
||||||
|
namespace bla
|
||||||
|
definition t := false
|
||||||
|
check foo.t -- <<< must print foo.t : Prop instead of t : Prop
|
||||||
|
end bla
|
1
tests/lean/alias2.lean.expected.out
Normal file
1
tests/lean/alias2.lean.expected.out
Normal file
|
@ -0,0 +1 @@
|
||||||
|
foo.t : Prop
|
Loading…
Reference in a new issue