INNER CODE UNIT · Rust
is_blocklisted_fn
EmbarkStudios/rust-gpu · crates/rustc_codegen_spirv/src/lib.rs:135
fn is_blocklisted_fn<'tcx>(
tcx: TyCtxt<'tcx>,
sym: &symbols::Symbols,
instance: Instance<'tcx>,
) -> bool {
// TODO: These sometimes have a constant value of an enum variant with a hole
if let InstanceDef::Item(def_id) = instance.def {
if let Some(debug_trait_def_id) = tcx.get_diagnostic_item(sym::Debug) {
// Helper for detecting `<_ as core::fmt::Debug>::fmt` (in impls).
let is_debug_fmt_method = |def_id| match tcx.opt_associated_item(def_id) {
Some(assoc) if assoc.ident(tcx).name == sym::fmt => match assoc.container {
ty::ImplContainer => {
let impl_def_id = assoc.container_id(tcx);
tcx.impl_trait_ref(impl_def_id)
.map(|tr| tr.skip_binder().def_id)
== Some(debug_trait_def_id)
}
ty::TraitContainer => false,