Update tests for `#[no_mangle]` on associated functions
https://github.com/rust-lang/rust/pull/86492 has landed:
- The code in https://github.com/rust-lang/miri/issues/1837 starts to work (even without `AssocFn::foo();` at line 12) in Miri.
- `pub` is not necessary for `#[no_mangle]` associated functions in `test-cargo-miri/exported-symbol-dep/src/lib.rs` anymore.
Closes https://github.com/rust-lang/miri/issues/1837.
123456
}
-pub struct AssocFn;
+struct AssocFn;
impl AssocFn {
#[no_mangle]
- pub fn assoc_fn_as_exported_symbol() -> i32 {
+ fn assoc_fn_as_exported_symbol() -> i32 {
-123456
}
}
-3
}
+struct AssocFn;
+
+impl AssocFn {
+ #[no_mangle]
+ fn qux() -> i32 {
+ -4
+ }
+}
+
+
fn main() {
// Repeat calls to make sure the `Instance` cache is not broken.
for _ in 0..3 {
extern "Rust" {
fn bar() -> i32;
fn baz() -> i32;
+ fn qux() -> i32;
}
assert_eq!(unsafe { bar() }, -2);
assert_eq!(unsafe { baz() }, -3);
+ assert_eq!(unsafe { qux() }, -4);
#[allow(clashing_extern_declarations)]
{
extern "C" {
fn bar() -> i32;
fn baz() -> i32;
+ fn qux() -> i32;
}
unsafe {
};
assert_eq!(transmute(bar)(), -2);
assert_eq!(transmute(baz)(), -3);
+ assert_eq!(transmute(qux)(), -4);
}
}
}