Skip to content
Open
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
31 changes: 18 additions & 13 deletions src/Translate.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1069,20 +1069,25 @@ let trait_impl_is_builtin (ctx : gen_ctx) (id : Pure.trait_impl_id) : bool =
[%silent_unwrap_opt_span] None
(TraitImplId.Map.find_opt id ctx.trans_trait_impls)
in
let trait_decl =
Pure.TraitDeclId.Map.find trait_impl.impl_trait.trait_decl_id
(* The trait declaration may have been dropped earlier while the impl is
still exported (e.g. mutually recursive trait clusters): in that case we
can't be looking at a builtin impl, so treat it as not builtin. *)
match
Pure.TraitDeclId.Map.find_opt trait_impl.impl_trait.trait_decl_id
ctx.trans_trait_decls
in
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.generics
(builtin_trait_impls_map ())
in
Option.is_some builtin_info
with
| None -> false
| Some trait_decl ->
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.generics
(builtin_trait_impls_map ())
in
Option.is_some builtin_info

(** Export a trait declaration. *)
let export_trait_decl (fmt : Format.formatter) (_config : gen_config)
Expand Down