Auto merge of #115214 - Urgau:rfc-3127-trim-paths, r=compiler-errors
Implement rustc part of RFC 3127 trim-paths This PR implements (or at least tries to) [RFC 3127 trim-paths](https://github.com/rust-lang/rust/issues/111540), the rustc part. That is `-Zremap-path-scope` with all of it's components/scopes. `@rustbot` label: +F-trim-paths
This commit is contained in:
commit
94c4e5c411
34 changed files with 580 additions and 92 deletions
24
src/doc/unstable-book/src/compiler-flags/remap-path-scope.md
Normal file
24
src/doc/unstable-book/src/compiler-flags/remap-path-scope.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# `remap-path-scope`
|
||||
|
||||
The tracking issue for this feature is: [#111540](https://github.com/rust-lang/rust/issues/111540).
|
||||
|
||||
------------------------
|
||||
|
||||
When the `--remap-path-prefix` option is passed to rustc, source path prefixes in all output will be affected by default.
|
||||
The `--remap-path-scope` argument can be used in conjunction with `--remap-path-prefix` to determine paths in which output context should be affected.
|
||||
This flag accepts a comma-separated list of values and may be specified multiple times, in which case the scopes are aggregated together. The valid scopes are:
|
||||
|
||||
- `macro` - apply remappings to the expansion of `std::file!()` macro. This is where paths in embedded panic messages come from
|
||||
- `diagnostics` - apply remappings to printed compiler diagnostics
|
||||
- `unsplit-debuginfo` - apply remappings to debug information only when they are written to compiled executables or libraries, but not when they are in split debuginfo files
|
||||
- `split-debuginfo` - apply remappings to debug information only when they are written to split debug information files, but not in compiled executables or libraries
|
||||
- `split-debuginfo-path` - apply remappings to the paths pointing to split debug information files. Does nothing when these files are not generated.
|
||||
- `object` - an alias for `macro,unsplit-debuginfo,split-debuginfo-path`. This ensures all paths in compiled executables or libraries are remapped, but not elsewhere.
|
||||
- `all` and `true` - an alias for all of the above, also equivalent to supplying only `--remap-path-prefix` without `--remap-path-scope`.
|
||||
|
||||
## Example
|
||||
```sh
|
||||
# This would produce an absolute path to main.rs in build outputs of
|
||||
# "./main.rs".
|
||||
rustc --remap-path-prefix=$(PWD)=/remapped -Zremap-path-prefix=object main.rs
|
||||
```
|
||||
|
|
@ -225,7 +225,8 @@ impl SourceCollector<'_, '_> {
|
|||
cur.push(&fname);
|
||||
|
||||
let title = format!("{} - source", src_fname.to_string_lossy());
|
||||
let desc = format!("Source of the Rust file `{}`.", filename.prefer_remapped());
|
||||
let desc =
|
||||
format!("Source of the Rust file `{}`.", filename.prefer_remapped_unconditionaly());
|
||||
let page = layout::Page {
|
||||
title: &title,
|
||||
css_class: "src",
|
||||
|
|
|
|||
|
|
@ -494,7 +494,7 @@ impl SerializableSpan {
|
|||
let loc: Loc = cx.sess().source_map().lookup_char_pos(span.lo());
|
||||
|
||||
Self {
|
||||
path: format!("{}", loc.file.name.prefer_remapped()),
|
||||
path: format!("{}", loc.file.name.prefer_remapped_unconditionaly()),
|
||||
line: loc.line,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
|||
this.tcx.sess.source_map().lookup_char_pos(BytePos(offset.bytes().try_into().unwrap()));
|
||||
|
||||
let name = fn_instance.to_string();
|
||||
let filename = lo.file.name.prefer_remapped().to_string();
|
||||
let filename = lo.file.name.prefer_remapped_unconditionaly().to_string();
|
||||
|
||||
Ok((fn_instance, lo, name, filename))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue