Fix ICE: attempted to remap an already remapped filename
This commit fixes an internal compiler error (ICE) that occurs when rustdoc attempts to process macros with a remapped filename. The issue arose during macro expansion when the `--remap-path-prefix` option was used. Instead of passing remapped filenames through, which would trigger the "attempted to remap an already remapped filename" panic, we now extract the original local path from remapped filenames before processing them. A test case has been added to verify this behavior. Fixes #138520 Signed-off-by: Charalampos Mitrodimas <charmitro@posteo.net>
This commit is contained in:
parent
5f3b84a421
commit
b14810669a
2 changed files with 11 additions and 2 deletions
|
@ -4,8 +4,8 @@ use rustc_ast_pretty::pprust::PrintState;
|
|||
use rustc_ast_pretty::pprust::state::State as Printer;
|
||||
use rustc_middle::ty::TyCtxt;
|
||||
use rustc_session::parse::ParseSess;
|
||||
use rustc_span::Span;
|
||||
use rustc_span::symbol::{Ident, Symbol, kw};
|
||||
use rustc_span::{FileName, Span};
|
||||
|
||||
/// Render a macro matcher in a format suitable for displaying to the user
|
||||
/// as part of an item declaration.
|
||||
|
@ -63,7 +63,7 @@ fn snippet_equal_to_token(tcx: TyCtxt<'_>, matcher: &TokenTree) -> Option<String
|
|||
|
||||
// Create a Parser.
|
||||
let psess = ParseSess::new(rustc_driver::DEFAULT_LOCALE_RESOURCES.to_vec());
|
||||
let file_name = source_map.span_to_filename(span);
|
||||
let file_name = FileName::macro_expansion_source_code(&snippet);
|
||||
let mut parser =
|
||||
match rustc_parse::new_parser_from_source_str(&psess, file_name, snippet.clone()) {
|
||||
Ok(parser) => parser,
|
||||
|
|
9
tests/rustdoc-ui/remap-path-prefix-macro.rs
Normal file
9
tests/rustdoc-ui/remap-path-prefix-macro.rs
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Regression test for "attempted to remap an already remapped filename" ICE in rustdoc
|
||||
// when using --remap-path-prefix with macro rendering.
|
||||
// <https://github.com/rust-lang/rust/issues/138520>
|
||||
|
||||
//@ compile-flags:-Z unstable-options --remap-path-prefix={{src-base}}=remapped_path
|
||||
//@ rustc-env:RUST_BACKTRACE=0
|
||||
//@ build-pass
|
||||
|
||||
macro_rules! f(() => {});
|
Loading…
Add table
Add a link
Reference in a new issue