You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
error[E0277]: the trait bound `std::ptr::DynMetadata<dyn std::cmp::PartialEq<u8>>: kani::mem::PtrProperties<Wrapper<dyn std::cmp::PartialEq<u8>>>` is not satisfied--> adt_with_metadata.rs:35:33
|35| assert!(can_dereference(raw_ptr));
|---------------^^^^^^^the trait `kani::mem::PtrProperties<Wrapper<dyn std::cmp::PartialEq<u8>>>` is not implemented for `std::ptr::DynMetadata<dyn std::cmp::PartialEq<u8>>`|||required by a bound introduced by this call|= help: the trait `kani::mem::PtrProperties<dyn std::cmp::PartialEq<u8>>` is implemented for `std::ptr::DynMetadata<dyn std::cmp::PartialEq<u8>>`
= help: for that trait implementation, expected `dyn std::cmp::PartialEq<u8>`, found `Wrapper<dyn std::cmp::PartialEq<u8>>`
note: required by a bound in `kani::mem::can_dereference`
This change fixes how we compute size of the object in our mem
predicates, and provide user visible methods to try to retrieve the size
of the object if known and valid (`checked_size_of_raw` and
`checked_align_of_raw`.
Fixes#3612Fixes#3627
## Call-outs
To simplify this PR, I moved the following changes to their own PRs:
1. #3644
2. #3718
I also removed the fix for the intrinsics `size_of_val` and
`align_of_val` from this PR, and I will create a follow up PR once this
one is merged.
---------
Co-authored-by: Carolyn Zech <cmzech@amazon.com>
Let's say you have a crate
crate_a
that defines acopy_val
function that is annotated with contracts:Now we have a crate
crate_b
that usescrate_a
that we want to verify using Kani:using the following command line invocation:
with Kani version: 0.56.0
I expected to see this happen: Compilation should succeed.
Instead, this happened: Kani will fail to compile
crate_a
due to missing trait bounds.The text was updated successfully, but these errors were encountered: