rust/tests/incremental/foreign.rs
2024-05-20 11:13:10 -04:00

22 lines
566 B
Rust

// Test what happens we save incremental compilation state that makes
// use of foreign items. This used to ICE (#34991).
//@ revisions: rpass1
use std::ffi::CString;
mod mlibc {
extern "C" {
// strlen is provided either by an external library or compiler-builtins as a fallback
pub fn strlen(x: *const std::ffi::c_char) -> usize;
}
}
fn strlen(s: String) -> usize {
let c = CString::new(s).unwrap();
unsafe { mlibc::strlen(c.as_ptr()) }
}
pub fn main() {
assert_eq!(strlen("1024".to_string()), strlen("2048".to_string()));
}