mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-30 04:56:25 +03:00
rewrite incr-prev-body-beyond-eof in rmake
This commit is contained in:
@@ -79,7 +79,6 @@ run-make/inaccessible-temp-dir/Makefile
|
||||
run-make/include_bytes_deps/Makefile
|
||||
run-make/incr-add-rust-src-component/Makefile
|
||||
run-make/incr-foreign-head-span/Makefile
|
||||
run-make/incr-prev-body-beyond-eof/Makefile
|
||||
run-make/incremental-debugger-visualizer/Makefile
|
||||
run-make/incremental-session-fail/Makefile
|
||||
run-make/inline-always-many-cgu/Makefile
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# ignore-none no-std is not supported
|
||||
# ignore-nvptx64-nvidia-cuda FIXME: can't find crate for `std`
|
||||
|
||||
include ../tools.mk
|
||||
|
||||
# Tests that we don't ICE during incremental compilation after modifying a
|
||||
# function span such that its previous end line exceeds the number of lines
|
||||
# in the new file, but its start line/column and length remain the same.
|
||||
|
||||
SRC=$(TMPDIR)/src
|
||||
INCR=$(TMPDIR)/incr
|
||||
|
||||
all:
|
||||
mkdir $(SRC)
|
||||
mkdir $(INCR)
|
||||
cp a.rs $(SRC)/main.rs
|
||||
$(RUSTC) -C incremental=$(INCR) $(SRC)/main.rs --target $(TARGET)
|
||||
cp b.rs $(SRC)/main.rs
|
||||
$(RUSTC) -C incremental=$(INCR) $(SRC)/main.rs --target $(TARGET)
|
||||
@@ -0,0 +1,32 @@
|
||||
// After modifying the span of a function, if the length of
|
||||
// the span remained the same but the end line number became different,
|
||||
// this would cause an internal compiler error (ICE), fixed in #76256.
|
||||
|
||||
// This test compiles main.rs twice, first with end line 16 and
|
||||
// then with end line 12. If compilation is successful, the end line
|
||||
// was hashed by rustc in addition to the span length, and the fix still
|
||||
// works.
|
||||
|
||||
// FIXME: Ignore flags temporarily disabled for the test.
|
||||
// ignore-none
|
||||
// ignore-nvptx64-nvidia-cuda
|
||||
|
||||
use run_make_support::{rustc, target, tmp_dir};
|
||||
use std::fs;
|
||||
|
||||
fn main() {
|
||||
fs::create_dir(tmp_dir().join("src"));
|
||||
fs::create_dir(tmp_dir().join("incr"));
|
||||
fs::copy("a.rs", tmp_dir().join("main.rs"));
|
||||
rustc()
|
||||
.incremental(tmp_dir().join("incr"))
|
||||
.input(tmp_dir().join("src/main.rs"))
|
||||
.target(target())
|
||||
.run();
|
||||
fs::copy("b.rs", tmp_dir().join("main.rs"));
|
||||
rustc()
|
||||
.incremental(tmp_dir().join("incr"))
|
||||
.input(tmp_dir().join("src/main.rs"))
|
||||
.target(target())
|
||||
.run();
|
||||
}
|
||||
Reference in New Issue
Block a user