Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Judgment check_drop_impl_always_applicable at crates/formality-rust/src/check/impls.rs:328

Signature:

check_drop_impl_always_applicable(program: Program, trait_impl: TraitImpl, crate_id: CrateId,) => ()

The number on each rule’s conclusion is positive coverage; the number on each premise is negative coverage. Click a number to browse the tests.

not a Drop impl
LineCoverageSource
339(if **trait_impl.trait_id() != *"Drop")
──────── ("not a Drop impl")
341127(check_drop_impl_always_applicable(program, trait_impl, crate_id) => ())
Drop impl is always applicable
LineCoverageSource
345(if **trait_impl.trait_id() == *"Drop")
3471(let adt_id = drop_impl_adt_id(&trait_impl)?)
3491(check_drop_impl_in_defining_crate(program, adt_id, crate_id) => ())
350(let adt = program.program().adt_item_named(adt_id)?.to_adt())
352N/A(let (env, adt_vars) = Env::default().universal_substitution(&adt.binder))
353(let adt_bound = adt.binder.instantiate_with(adt_vars)?)
354N/A(let adt_self_ty = Ty::rigid(adt_id, adt_vars))
357N/A(let drop_trait_ref = crate::grammar::TraitId::new("Drop").with(adt_self_ty, ()))
3583(super::prove_goal(&program, &env, &adt_bound.where_clauses,
Predicate::IsImplemented(drop_trait_ref.clone())) => ())
──────── ("Drop impl is always applicable")
3616(check_drop_impl_always_applicable(program, trait_impl, crate_id) => ())