Skip to content

Commit 58a47cd

Browse files
avanhatttedinski
authored andcommitted
Fix dyn trait _fail tests compilation errors (rust-lang#342)
1 parent c39c268 commit 58a47cd

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/test/cbmc/DynTrait/main_fail.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ fn main() {
3535
let animal = random_animal(random_number);
3636
let s = animal.noise();
3737
if (random_number < 5) {
38-
_VERIFIER_expect_fail(s == 2, "Wrong noise");
38+
__VERIFIER_expect_fail(s == 2, "Wrong noise");
3939
} else {
40-
_VERIFIER_expect_fail(s == 1, "Wrong noise");
40+
__VERIFIER_expect_fail(s == 1, "Wrong noise");
4141
}
4242
}

src/test/cbmc/DynTrait/nested_boxes_fail.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
#![feature(core_intrinsics)]
99
#![feature(ptr_metadata)]
1010

11+
use std::any::Any;
1112
use std::intrinsics::size_of;
13+
use std::ptr::DynMetadata;
1214

1315
include!("../Helpers/vtable_utils_ignore.rs");
1416

@@ -26,15 +28,16 @@ fn main() {
2628
unsafe {
2729
// Outermost trait object
2830
// The size is 16, because the data is another fat pointer
29-
let vtable3: *mut usize = vtable!(dyn_trait3);
31+
let dyn_3 = &*dyn_trait3 as &dyn Send;
32+
let vtable3: DynMetadata<dyn Any> = vtable!(dyn_3);
3033
assert!(size_from_vtable(vtable3) != 16);
3134
assert!(align_from_vtable(vtable3) != 8);
3235

3336
// Inspect the data pointer from dyn_trait3
34-
let data_ptr3 = data!(dyn_trait3) as *mut usize;
37+
let data_ptr3 = data!(dyn_3) as *mut usize;
3538

3639
// The second half of this fat pointer is another vtable, for dyn_trait2
37-
let vtable2 = *(data_ptr3.offset(1) as *mut *mut usize);
40+
let vtable2 = *(data_ptr3.offset(1) as *mut DynMetadata<dyn Any>);
3841

3942
// The size is 16, because the data is another fat pointer
4043
assert!(size_from_vtable(vtable2) != 16);
@@ -44,7 +47,7 @@ fn main() {
4447
let data_ptr2 = *(data_ptr3 as *mut *mut usize);
4548

4649
// The second half of this fat pointer is another vtable, for dyn_trait1
47-
let vtable1 = *(data_ptr2.offset(1) as *mut *mut usize);
50+
let vtable1 = *(data_ptr2.offset(1) as *mut DynMetadata<dyn Any>);
4851

4952
// The size is 8, because the data is the Foo itself
5053
assert!(size_from_vtable(vtable1) != size_of::<Foo>());

0 commit comments

Comments
 (0)