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