Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions src/Translate.ml
Original file line number Diff line number Diff line change
Expand Up @@ -754,24 +754,26 @@ let export_trait_decl (fmt : Format.formatter) (_config : gen_config)
let export_trait_impl (fmt : Format.formatter) (_config : gen_config)
(ctx : gen_ctx) (trait_impl_id : Pure.trait_impl_id) : unit =
(* Lookup the definition *)
let trait_impl = TraitImplId.Map.find trait_impl_id ctx.trans_trait_impls in
let trait_decl =
Pure.TraitDeclId.Map.find trait_impl.impl_trait.trait_decl_id
ctx.trans_trait_decls
in
(* Check if the trait implementation is builtin *)
let builtin_info =
let open ExtractBuiltin in
let trait_impl =
TraitImplId.Map.find trait_impl.def_id ctx.crate.trait_impls
match TraitImplId.Map.find_opt trait_impl_id ctx.trans_trait_impls with
| None -> ()
| Some trait_impl ->
let trait_decl =
Pure.TraitDeclId.Map.find trait_impl.impl_trait.trait_decl_id
ctx.trans_trait_decls
in
match_name_with_generics_find_opt ctx.trans_ctx trait_decl.item_meta.name
trait_impl.impl_trait.decl_generics
(builtin_trait_impls_map ())
in
match builtin_info with
| None -> Extract.extract_trait_impl ctx fmt trait_impl
| Some _ -> ()
(* Check if the trait implementation is builtin *)
let builtin_info =
let open ExtractBuiltin in
let trait_impl =
TraitImplId.Map.find trait_impl.def_id ctx.crate.trait_impls
in
match_name_with_generics_find_opt ctx.trans_ctx trait_decl.item_meta.name
trait_impl.impl_trait.decl_generics
(builtin_trait_impls_map ())
in
match builtin_info with
| None -> Extract.extract_trait_impl ctx fmt trait_impl
| Some _ -> ()

(** A generic utility to generate the extracted definitions: as we may want to
split the definitions between different files (or not), we can control
Expand Down
8 changes: 5 additions & 3 deletions src/extract/Extract.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2382,9 +2382,11 @@ let extract_trait_decl_method_names (ctx : extraction_ctx)
let funs_map = StringMap.of_list info.methods in
List.map
(fun (item_name, _) ->
let info = StringMap.find item_name funs_map in
let fun_name = info.extract_name in
(item_name, fun_name))
match StringMap.find_opt item_name funs_map with
| Some info ->
let fun_name = info.extract_name in
(item_name, fun_name)
| None -> craise __FILE__ __LINE__ trait_decl.item_meta.span ("Could not find: " ^ item_name))
methods
in
(* Register the names *)
Expand Down
2 changes: 2 additions & 0 deletions src/interp/Interpreter.ml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ let compute_contexts (crate : crate) : decls_ctx =
let ids = g_declaration_group_to_list g in
let decls = List.map any_decl_id_to_string ids in
let local_requires =
try
LlbcAstUtils.find_local_transitive_dep crate (AnyDeclIdSet.of_list ids)
with _ -> []
in
let local_requires = List.map span_to_string local_requires in
let local_requires =
Expand Down
Loading