35 lines
1013 B
Rust
35 lines
1013 B
Rust
#![crate_type = "dylib"]
|
|
#![allow(dead_code)]
|
|
|
|
// `pub` extern fn here is a Rust nameres visibility concept, and should not affect symbol
|
|
// visibility in the dylib.
|
|
#[no_mangle]
|
|
pub extern "C" fn fun1() {}
|
|
|
|
// (Lack of) `pub` for the extern fn here is a Rust nameres visibility concept, and should not
|
|
// affect symbol visibility in the dylib.
|
|
#[no_mangle]
|
|
extern "C" fn fun2() {}
|
|
|
|
// Modules are a Rust nameres concept, and should not affect symbol visibility in the dylib if the
|
|
// extern fn is nested inside a module.
|
|
mod foo {
|
|
#[no_mangle]
|
|
pub extern "C" fn fun3() {}
|
|
}
|
|
|
|
// Similarly, the Rust visibility of the containing module is a Rust nameres concept, and should not
|
|
// affect symbol visibility in the dylib.
|
|
pub mod bar {
|
|
#[no_mangle]
|
|
pub extern "C" fn fun4() {}
|
|
}
|
|
|
|
// Non-extern `#[no_mangle]` fn should induce a symbol visible in the dylib.
|
|
#[no_mangle]
|
|
pub fn fun5() {}
|
|
|
|
// The Rust visibility of the fn should not affect is symbol visibility in the dylib.
|
|
#[no_mangle]
|
|
fn fun6() {}
|