summaryrefslogtreecommitdiff
path: root/compiler/Extract.ml
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/Extract.ml')
-rw-r--r--compiler/Extract.ml61
1 files changed, 33 insertions, 28 deletions
diff --git a/compiler/Extract.ml b/compiler/Extract.ml
index 1fbce7fd..cf632388 100644
--- a/compiler/Extract.ml
+++ b/compiler/Extract.ml
@@ -26,7 +26,7 @@ let extract_fun_decl_register_names (ctx : extraction_ctx)
let builtin =
let open ExtractBuiltin in
let funs_map = builtin_funs_map () in
- match_name_find_opt ctx.trans_ctx def.f.llbc_name funs_map
+ match_name_find_opt ctx.trans_ctx def.f.item_meta.name funs_map
in
(* Use the builtin names if necessary *)
match builtin with
@@ -214,7 +214,7 @@ let fun_builtin_filter_types (id : FunDeclId.id) (types : 'a list)
let decl = FunDeclId.Map.find id ctx.trans_funs in
let err =
"Ill-formed builtin information for function "
- ^ name_to_string ctx decl.f.llbc_name
+ ^ name_to_string ctx decl.f.item_meta.name
^ ": "
^ string_of_int (List.length filter)
^ " filtering arguments provided for "
@@ -1158,7 +1158,7 @@ let extract_fun_parameters (space : bool ref) (ctx : extraction_ctx)
(* Add the type parameters - note that we need those bindings only for the
* body translation (they are not top-level) *)
let ctx, type_params, cg_params, trait_clauses =
- ctx_add_generic_params def.item_meta.span def.llbc_name
+ ctx_add_generic_params def.item_meta.span def.item_meta.name
def.signature.llbc_generics def.signature.generics ctx
in
(* Print the generics *)
@@ -1259,11 +1259,11 @@ let extract_template_fstar_decreases_clause (ctx : extraction_ctx)
(* Print a comment to link the extracted type to its original rust definition *)
(let name =
if !extract_external_name_patterns && not def.item_meta.is_local then
- Some def.llbc_name
+ Some def.item_meta.name
else None
in
extract_comment_with_raw_span ctx fmt
- [ "[" ^ name_to_string ctx def.llbc_name ^ "]: decreases clause" ]
+ [ "[" ^ name_to_string ctx def.item_meta.name ^ "]: decreases clause" ]
name def.item_meta.span.span);
F.pp_print_space fmt ();
(* Open a box for the definition, so that whenever possible it gets printed on
@@ -1332,7 +1332,7 @@ let extract_template_lean_termination_and_decreasing (ctx : extraction_ctx)
F.pp_print_break fmt 0 0;
(* Print a comment to link the extracted type to its original rust definition *)
extract_comment_with_raw_span ctx fmt
- [ "[" ^ name_to_string ctx def.llbc_name ^ "]: termination measure" ]
+ [ "[" ^ name_to_string ctx def.item_meta.name ^ "]: termination measure" ]
None def.item_meta.span.span;
F.pp_print_space fmt ();
(* Open a box for the definition, so that whenever possible it gets printed on
@@ -1391,7 +1391,7 @@ let extract_template_lean_termination_and_decreasing (ctx : extraction_ctx)
(* syntax <def_name> term ... term : tactic *)
F.pp_print_break fmt 0 0;
extract_comment_with_raw_span ctx fmt
- [ "[" ^ name_to_string ctx def.llbc_name ^ "]: decreases_by tactic" ]
+ [ "[" ^ name_to_string ctx def.item_meta.name ^ "]: decreases_by tactic" ]
None def.item_meta.span.span;
F.pp_print_space fmt ();
F.pp_open_hvbox fmt 0;
@@ -1423,7 +1423,7 @@ let extract_template_lean_termination_and_decreasing (ctx : extraction_ctx)
let extract_fun_comment (ctx : extraction_ctx) (fmt : F.formatter)
(def : fun_decl) : unit =
- let comment_pre = "[" ^ name_to_string ctx def.llbc_name ^ "]:" in
+ let comment_pre = "[" ^ name_to_string ctx def.item_meta.name ^ "]:" in
let comment =
let loop_comment =
match def.loop_id with
@@ -1434,7 +1434,7 @@ let extract_fun_comment (ctx : extraction_ctx) (fmt : F.formatter)
in
let name =
if !extract_external_name_patterns && not def.item_meta.is_local then
- Some def.llbc_name
+ Some def.item_meta.name
else None
in
extract_comment_with_raw_span ctx fmt comment name def.item_meta.span.span
@@ -1722,7 +1722,7 @@ let extract_fun_decl_hol4_opaque (ctx : extraction_ctx) (fmt : F.formatter)
(* Add the type/const gen parameters - note that we need those bindings
only for the generation of the type (they are not top-level) *)
let ctx, _, _, _ =
- ctx_add_generic_params def.item_meta.span def.llbc_name
+ ctx_add_generic_params def.item_meta.span def.item_meta.name
def.signature.llbc_generics def.signature.generics ctx
in
(* Add breaks to insert new lines between definitions *)
@@ -1925,11 +1925,11 @@ let extract_global_decl_aux (ctx : extraction_ctx) (fmt : F.formatter)
F.pp_print_break fmt 0 0;
let name =
if !extract_external_name_patterns && not global.item_meta.is_local then
- Some global.llbc_name
+ Some global.item_meta.name
else None
in
extract_comment_with_raw_span ctx fmt
- [ "[" ^ name_to_string ctx global.llbc_name ^ "]" ]
+ [ "[" ^ name_to_string ctx global.item_meta.name ^ "]" ]
name global.span.span;
F.pp_print_space fmt ();
@@ -1947,7 +1947,7 @@ let extract_global_decl_aux (ctx : extraction_ctx) (fmt : F.formatter)
in
(* Add the type parameters *)
let ctx, type_params, cg_params, trait_clauses =
- ctx_add_generic_params span global.llbc_name global.llbc_generics
+ ctx_add_generic_params span global.item_meta.name global.llbc_generics
global.generics ctx
in
match body.body with
@@ -2173,7 +2173,9 @@ let extract_trait_decl_method_names (ctx : extraction_ctx)
let llbc_name : Types.name =
[ Types.PeIdent (item_name, Disambiguator.zero) ]
in
- let f = { f with llbc_name } in
+ let f =
+ { f with item_meta = { f.item_meta with name = llbc_name } }
+ in
let name = ctx_compute_fun_name f ctx in
(* Add a prefix if necessary *)
let name =
@@ -2208,7 +2210,7 @@ let extract_trait_decl_register_names (ctx : extraction_ctx)
(* Lookup the information if this is a builtin trait *)
let open ExtractBuiltin in
let builtin_info =
- match_name_find_opt ctx.trans_ctx trait_decl.llbc_name
+ match_name_find_opt ctx.trans_ctx trait_decl.item_meta.name
(builtin_trait_decls_map ())
in
let ctx =
@@ -2254,7 +2256,7 @@ let extract_trait_impl_register_names (ctx : extraction_ctx)
TraitImplId.Map.find trait_impl.def_id ctx.crate.trait_impls
in
let decl_ref = trait_impl.impl_trait in
- match_name_with_generics_find_opt ctx.trans_ctx trait_decl.llbc_name
+ match_name_with_generics_find_opt ctx.trans_ctx trait_decl.item_meta.name
decl_ref.decl_generics
(builtin_trait_impls_map ())
in
@@ -2360,7 +2362,7 @@ let extract_trait_decl_method_items (ctx : extraction_ctx) (fmt : F.formatter)
- we only generate trait clauses for the clauses we find in the
pure generics *)
let ctx, type_params, cg_params, trait_clauses =
- ctx_add_generic_params decl.item_meta.span f.llbc_name
+ ctx_add_generic_params decl.item_meta.span f.item_meta.name
f.signature.llbc_generics generics ctx
in
let backend_uses_forall =
@@ -2390,11 +2392,11 @@ let extract_trait_decl (ctx : extraction_ctx) (fmt : F.formatter)
(* Print a comment to link the extracted type to its original rust definition *)
(let name =
if !extract_external_name_patterns && not decl.item_meta.is_local then
- Some decl.llbc_name
+ Some decl.item_meta.name
else None
in
extract_comment_with_raw_span ctx fmt
- [ "Trait declaration: [" ^ name_to_string ctx decl.llbc_name ^ "]" ]
+ [ "Trait declaration: [" ^ name_to_string ctx decl.item_meta.name ^ "]" ]
name decl.item_meta.span.span);
F.pp_print_break fmt 0 0;
(* Open two outer boxes for the definition, so that whenever possible it gets printed on
@@ -2429,8 +2431,8 @@ let extract_trait_decl (ctx : extraction_ctx) (fmt : F.formatter)
(* Add the type and const generic params - note that we need those bindings only for the
* body translation (they are not top-level) *)
let ctx, type_params, cg_params, trait_clauses =
- ctx_add_generic_params decl.item_meta.span decl.llbc_name decl.llbc_generics
- generics ctx
+ ctx_add_generic_params decl.item_meta.span decl.item_meta.name
+ decl.llbc_generics generics ctx
in
extract_generic_params decl.item_meta.span ctx fmt TypeDeclId.Set.empty
generics type_params cg_params trait_clauses;
@@ -2666,7 +2668,7 @@ let extract_trait_impl_method_items (ctx : extraction_ctx) (fmt : F.formatter)
- we only generate trait clauses for the clauses we find in the
pure generics *)
let ctx, f_tys, f_cgs, f_tcs =
- ctx_add_generic_params impl.item_meta.span f.llbc_name
+ ctx_add_generic_params impl.item_meta.span f.item_meta.name
f.signature.llbc_generics f_generics ctx
in
let use_forall = f_generics <> empty_generic_params in
@@ -2696,7 +2698,8 @@ let extract_trait_impl_method_items (ctx : extraction_ctx) (fmt : F.formatter)
(** Extract a trait implementation *)
let extract_trait_impl (ctx : extraction_ctx) (fmt : F.formatter)
(impl : trait_impl) : unit =
- log#ldebug (lazy ("extract_trait_impl: " ^ name_to_string ctx impl.llbc_name));
+ log#ldebug
+ (lazy ("extract_trait_impl: " ^ name_to_string ctx impl.item_meta.name));
(* Retrieve the impl name *)
let impl_name = ctx_get_trait_impl impl.item_meta.span impl.def_id ctx in
(* Add a break before *)
@@ -2707,12 +2710,14 @@ let extract_trait_impl (ctx : extraction_ctx) (fmt : F.formatter)
let decl_id = impl.impl_trait.trait_decl_id in
let trait_decl = TraitDeclId.Map.find decl_id ctx.trans_trait_decls in
let decl_ref = impl.llbc_impl_trait in
- ( Some trait_decl.llbc_name,
+ ( Some trait_decl.item_meta.name,
Some (trait_decl.llbc_generics, decl_ref.decl_generics) )
else (None, None)
in
extract_comment_with_raw_span ctx fmt
- [ "Trait implementation: [" ^ name_to_string ctx impl.llbc_name ^ "]" ]
+ [
+ "Trait implementation: [" ^ name_to_string ctx impl.item_meta.name ^ "]";
+ ]
(* TODO: why option option for the generics? Looks like a bug in OCaml!? *)
name ?generics:(Some generics) impl.item_meta.span.span);
F.pp_print_break fmt 0 0;
@@ -2744,8 +2749,8 @@ let extract_trait_impl (ctx : extraction_ctx) (fmt : F.formatter)
(* Add the type and const generic params - note that we need those bindings only for the
* body translation (they are not top-level) *)
let ctx, type_params, cg_params, trait_clauses =
- ctx_add_generic_params impl.item_meta.span impl.llbc_name impl.llbc_generics
- impl.generics ctx
+ ctx_add_generic_params impl.item_meta.span impl.item_meta.name
+ impl.llbc_generics impl.generics ctx
in
let all_generics = (type_params, cg_params, trait_clauses) in
extract_generic_params impl.item_meta.span ctx fmt TypeDeclId.Set.empty
@@ -2913,7 +2918,7 @@ let extract_unit_test_if_unit_fun (ctx : extraction_ctx) (fmt : F.formatter)
F.pp_print_break fmt 0 0;
(* Print a comment *)
extract_comment fmt
- [ "Unit test for [" ^ name_to_string ctx def.llbc_name ^ "]" ];
+ [ "Unit test for [" ^ name_to_string ctx def.item_meta.name ^ "]" ];
F.pp_print_space fmt ();
(* Open a box for the test *)
F.pp_open_hovbox fmt ctx.indent_incr;