feat(library/init/lean): remove some TODOs using the new opaque constants

This commit is contained in:
Leonardo de Moura 2019-03-15 17:46:29 -07:00
parent 0b7d987699
commit ffc3436dd6
4 changed files with 4 additions and 74 deletions

View file

@ -69,15 +69,11 @@ args.foldl expr.app fn
def mk_capp (fn : name) (args : list expr) : expr :=
mk_app (expr.const fn []) args
-- Mark as opaque
@[extern "lean_expr_hash"]
protected def hash (n : @& expr) : usize :=
0 -- dummy implementation
constant hash (n : @& expr) : usize := default usize
-- Mark as opaque
@[extern "lean_expr_dbg_to_string"]
protected def dbg_to_string (e : @& expr) : string :=
"" -- dummy implementation
constant dbg_to_string (e : @& expr) : string := default string
end expr

View file

@ -71,10 +71,8 @@ def level.instantiate (s : name → option level) : level → level
| none := l)
| l := l
-- Mark as opaque
@[extern "lean_level_hash"]
protected def level.hash (n : @& level) : usize :=
0 -- dummy implementation
constant level.hash (n : @& level) : usize := default usize
/- level to format -/
namespace level_to_format

View file

@ -32,15 +32,8 @@ instance string_to_name : has_coe string name :=
⟨mk_simple_name⟩
namespace name
private def hash_aux : name → usize → usize
| anonymous r := r
| (mk_string n s) r := hash_aux n (mix_hash r (hash s))
| (mk_numeral n k) r := hash_aux n (mix_hash r (hash k))
-- TODO: mark as opaque
@[extern "lean_name_hash_usize"]
protected def hash (n : @& name) : usize :=
hash_aux n 11
constant hash (n : @& name) : usize := default usize
instance : hashable name :=
⟨name.hash⟩

View file

@ -26,7 +26,6 @@ obj* l_lean_name_decidable__eq;
obj* l_lean_mk__str__name(obj*, obj*);
obj* l_rbnode_ins___main___at_lean_name__map_insert___spec__3___boxed(obj*);
obj* l_rbnode_insert___at_lean_name__map_insert___spec__2___rarg___boxed(obj*, obj*, obj*, obj*);
obj* l___private_init_lean_name_1__hash__aux___main___boxed(obj*, obj*);
obj* l_lean_name_components_x_27(obj*);
obj* l_lean_name__map_find___rarg___boxed(obj*, obj*);
obj* l_lean_name_quick__lt__core___main___boxed(obj*, obj*);
@ -82,7 +81,6 @@ obj* l_lean_name_append___main(obj*, obj*);
obj* l_lean_name_to__string__with__sep(obj*, obj*);
obj* l_lean_name_to__string__with__sep___main___boxed(obj*, obj*);
obj* l_lean_name_dec__eq___boxed(obj*, obj*);
usize l___private_init_lean_name_1__hash__aux(obj*, usize);
obj* l_rbnode_ins___main___at_lean_name__set_insert___spec__4(obj*, obj*, obj*, obj*);
obj* l_rbmap_insert___main___at_lean_name__map_insert___spec__1___boxed(obj*);
obj* l_lean_name__map_insert___boxed(obj*);
@ -108,17 +106,12 @@ obj* l_lean_mk__num__name(obj*, obj*);
uint8 l_lean_name_quick__lt(obj*, obj*);
obj* l_lean_mk__simple__name(obj*);
obj* l_lean_name_lean_has__to__format(obj*);
namespace lean {
usize usize_of_nat(obj*);
}
obj* l_rbnode_balance1___main___rarg(obj*, obj*);
obj* l___private_init_lean_name_1__hash__aux___boxed(obj*, obj*);
obj* l_lean_name_to__string__with__sep___boxed(obj*, obj*);
obj* l_lean_name__map_find(obj*);
obj* l_lean_name_update__prefix___main(obj*, obj*);
obj* l_lean_name_get__prefix(obj*);
obj* l_rbnode_ins___main___at_lean_name__map_insert___spec__3___rarg(obj*, obj*, obj*, obj*);
usize l___private_init_lean_name_1__hash__aux___main(obj*, usize);
obj* l_rbmap_find___main___at_lean_name__map_find___spec__1___rarg___boxed(obj*, obj*);
extern "C" obj* lean_name_mk_numeral(obj*, obj*);
obj* l_nat_repr(obj*);
@ -184,56 +177,6 @@ x_0 = lean::alloc_closure(reinterpret_cast<void*>(l_lean_mk__simple__name), 1, 0
return x_0;
}
}
usize l___private_init_lean_name_1__hash__aux___main(obj* x_0, usize x_1) {
_start:
{
switch (lean::obj_tag(x_0)) {
case 0:
{
return x_1;
}
default:
{
obj* x_2; usize x_3;
x_2 = lean::cnstr_get(x_0, 0);
x_3 = 0;
x_0 = x_2;
x_1 = x_3;
goto _start;
}
}
}
}
obj* l___private_init_lean_name_1__hash__aux___main___boxed(obj* x_0, obj* x_1) {
_start:
{
usize x_2; usize x_3; obj* x_4;
x_2 = lean::unbox_size_t(x_1);
x_3 = l___private_init_lean_name_1__hash__aux___main(x_0, x_2);
x_4 = lean::box_size_t(x_3);
lean::dec(x_0);
return x_4;
}
}
usize l___private_init_lean_name_1__hash__aux(obj* x_0, usize x_1) {
_start:
{
usize x_2;
x_2 = l___private_init_lean_name_1__hash__aux___main(x_0, x_1);
return x_2;
}
}
obj* l___private_init_lean_name_1__hash__aux___boxed(obj* x_0, obj* x_1) {
_start:
{
usize x_2; usize x_3; obj* x_4;
x_2 = lean::unbox_size_t(x_1);
x_3 = l___private_init_lean_name_1__hash__aux(x_0, x_2);
x_4 = lean::box_size_t(x_3);
lean::dec(x_0);
return x_4;
}
}
obj* l_lean_name_hash___boxed(obj* x_0) {
_start:
{