blob: f1ee19fc67cf29aff831156bed0907ef5c86b36a [file] [edit]
//! Regression test for <https://github.com/rust-lang/rust/issues/51907>.
//! Test extern `C` trait object methods don't ICE.
//@ run-pass
trait Foo {
extern "C" fn borrow(&self);
extern "C" fn take(self: Box<Self>);
}
struct Bar;
impl Foo for Bar {
#[allow(improper_ctypes_definitions)]
extern "C" fn borrow(&self) {}
#[allow(improper_ctypes_definitions)]
extern "C" fn take(self: Box<Self>) {}
}
fn main() {
let foo: Box<dyn Foo> = Box::new(Bar);
foo.borrow();
foo.take()
}