summaryrefslogtreecommitdiffstats
path: root/src/test/incremental/issue-85197-invalid-span
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/incremental/issue-85197-invalid-span
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/incremental/issue-85197-invalid-span')
-rw-r--r--src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs11
-rw-r--r--src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs14
-rw-r--r--src/test/incremental/issue-85197-invalid-span/auxiliary/respan.rs19
-rw-r--r--src/test/incremental/issue-85197-invalid-span/invalid_span_main.rs24
4 files changed, 0 insertions, 68 deletions
diff --git a/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs b/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs
deleted file mode 100644
index 2453af5b6..000000000
--- a/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-lib.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// revisions: rpass1 rpass2
-
-extern crate respan;
-
-#[macro_use]
-#[path = "invalid-span-helper-mod.rs"]
-mod invalid_span_helper_mod;
-
-// Invoke a macro from a different file - this
-// allows us to get tokens with spans from different files
-helper!(1);
diff --git a/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs b/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs
deleted file mode 100644
index 747174b1e..000000000
--- a/src/test/incremental/issue-85197-invalid-span/auxiliary/invalid-span-helper-mod.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#[macro_export]
-macro_rules! helper {
- // Use `:tt` instead of `:ident` so that we don't get a `None`-delimited group
- ($first:tt) => {
- pub fn foo<T>() {
- // The span of `$first` comes from another file,
- // so the expression `1 + $first` ends up with an
- // 'invalid' span that starts and ends in different files.
- // We use the `respan!` macro to give all tokens the same
- // `SyntaxContext`, so that the parser will try to merge the spans.
- respan::respan!(let a = 1 + $first;);
- }
- }
-}
diff --git a/src/test/incremental/issue-85197-invalid-span/auxiliary/respan.rs b/src/test/incremental/issue-85197-invalid-span/auxiliary/respan.rs
deleted file mode 100644
index 5088eab62..000000000
--- a/src/test/incremental/issue-85197-invalid-span/auxiliary/respan.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-// force-host
-// no-prefer-dynamic
-
-#![crate_type = "proc-macro"]
-
-extern crate proc_macro;
-use proc_macro::TokenStream;
-
-
-/// Copies the resolution information (the `SyntaxContext`) of the first
-/// token to all other tokens in the stream. Does not recurse into groups.
-#[proc_macro]
-pub fn respan(input: TokenStream) -> TokenStream {
- let first_span = input.clone().into_iter().next().unwrap().span();
- input.into_iter().map(|mut tree| {
- tree.set_span(tree.span().resolved_at(first_span));
- tree
- }).collect()
-}
diff --git a/src/test/incremental/issue-85197-invalid-span/invalid_span_main.rs b/src/test/incremental/issue-85197-invalid-span/invalid_span_main.rs
deleted file mode 100644
index f358460b3..000000000
--- a/src/test/incremental/issue-85197-invalid-span/invalid_span_main.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// revisions: rpass1 rpass2
-// aux-build:respan.rs
-// aux-build:invalid-span-helper-lib.rs
-
-// This issue has several different parts. The high level idea is:
-// 1. We create an 'invalid' span with the help of the `respan` proc-macro,
-// The compiler attempts to prevent the creation of invalid spans by
-// refusing to join spans with different `SyntaxContext`s. We work around
-// this by applying the same `SyntaxContext` to the span of every token,
-// using `Span::resolved_at`
-// 2. We using this invalid span in the body of a function, causing it to get
-// encoded into the `optimized_mir`
-// 3. We call the function from a different crate - since the function is generic,
-// monomorphization runs, causing `optimized_mir` to get called.
-// 4. We re-run compilation using our populated incremental cache, but without
-// making any changes. When we recompile the crate containing our generic function
-// (`invalid_span_helper_lib`), we load the span from the incremental cache, and
-// write it into the crate metadata.
-
-extern crate invalid_span_helper_lib;
-
-fn main() {
- invalid_span_helper_lib::foo::<u8>();
-}