Specifications in trait impl blocks

Adding specifications to trait functions requires the impl block to be annotated with #[refine_trait_spec]:

use prusti_contracts::*; trait TestTrait { fn trait_fn(self) -> i64; } #[refine_trait_spec] // <== Add this annotation impl TestTrait for i64 { // Cannot add these 2 specifications without `refine_trait_spec`: #[requires(true)] #[ensures(result >= 0)] fn trait_fn(self) -> i64 { 5 } }

Note: The current error message returned when #[refine_trait_spec] is missing does not hint at how to fix the issue. A message like this will be shown on either requires or ensures:

[E0407] method `prusti_pre_item_trait_fn_d5ce99cd719545e8adb9de778a953ec2` is not a member of trait `TestTrait`.

See issue #625 for more details.