// 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())); }