| // Ensure that modifying a crate on disk (without recompiling it) |
| // does not cause ICEs (internal compiler errors) in downstream crates. |
| // Previously, we would call `SourceMap.guess_head_span` on a span |
| // from an external crate, which would cause us to read an upstream |
| // source file from disk during compilation of a downstream crate. |
| // See https://github.com/rust-lang/rust/issues/86480 |
| |
| //@ ignore-none |
| // Reason: no-std is not supported |
| //@ ignore-nvptx64-nvidia-cuda |
| // Reason: can't find crate for 'std' |
| |
| use run_make_support::{rfs, rust_lib_name, rustc}; |
| |
| fn main() { |
| rustc().input("first_crate.rs").incremental("incr").crate_type("lib").run(); |
| rustc() |
| .input("second_crate.rs") |
| .incremental("incr") |
| .extern_("first_crate", rust_lib_name("first_crate")) |
| .crate_type("lib") |
| .run(); |
| rfs::remove_file("first_crate.rs"); |
| rustc().input("second_crate.rs").incremental("incr").cfg("second_run").crate_type("lib").run(); |
| } |