| // The generated test harness code contains spans with a dummy location, |
| // but a non-dummy SyntaxContext. Previously, the incremental cache was encoding |
| // these spans as a full span (with a source file index), instead of skipping |
| // the encoding of the location information. If the file gest moved, the hash |
| // of the span will be unchanged (since it has a dummy location), so the incr |
| // cache would end up try to load a non-existent file using the previously |
| // enccoded source file id. |
| // This test reproduces the steps that used to trigger this bug, and checks |
| // for successful compilation. |
| // See https://github.com/rust-lang/rust/issues/83112 |
| |
| //@ ignore-none |
| // Reason: no-std is not supported |
| //@ ignore-nvptx64-nvidia-cuda |
| // FIXME: can't find crate for 'std' |
| |
| use run_make_support::{rfs, rustc}; |
| |
| fn main() { |
| rfs::create_dir("incr"); |
| rfs::create_dir("src"); |
| rfs::create_dir("src/mydir"); |
| rfs::copy("main.rs", "src/main.rs"); |
| rustc().input("src/main.rs").incremental("incr").arg("--test").run(); |
| rfs::rename("src/main.rs", "src/mydir/main.rs"); |
| rustc().input("src/mydir/main.rs").incremental("incr").arg("--test").run(); |
| } |