rust/compiler/rustc_const_eval/src
bors 8188f6c808 Auto merge of #149709 - Urgau:overhaul-filenames, r=davidtwco
Overhaul filename handling for cross-compiler consistency

This PR overhauls the way we handle filenames in the compiler and `rmeta` in order to achieve achieve cross-compiler consistency (ie. having the same path no matter if the filename was created in the current compiler session or is coming from `rmeta`).

This is required as some parts of the compiler rely on consistent paths for the soundness of generated code (see rust-lang/rust#148328).

In order to achieved consistency multiple steps are being taken by this PR:
 - by making `RealFileName` immutable
 - by only having `SourceMap::to_real_filename` create `RealFileName`
   - currently `RealFileName` can be created from any `Path` and are remapped afterwards, which creates consistency issue
 - by also making `RealFileName` holds it's working directory, embeddable name and the remapped scopes
   - this removes the need for a `Session`, to know the current(!) scopes and cwd, which is invalid as they may not be equal to the scopes used when creating the filename

In order for `SourceMap::to_real_filename` to know which scopes to apply `FilePathMapping` now takes the current remapping scopes to apply, which makes `FileNameDisplayPreference` and company useless and are removed.

This PR is split-up in multiple commits (unfortunately not atomic), but should help review the changes.

Unblocks https://github.com/rust-lang/rust/pull/147611
Fixes https://github.com/rust-lang/rust/issues/148328
2025-12-13 14:32:09 +00:00
..
check_consts Rollup merge of #149592 - oli-obk:no_is_const_default_method_fn, r=fee1-dead 2025-12-05 23:26:37 -05:00
const_eval Overhaul filename handling for cross-compiler consistency 2025-12-12 07:33:09 +01:00
interpret Rollup merge of #149671 - RalfJung:interpret-float-min-max, r=mati865 2025-12-05 16:17:13 +01:00
util show packed alignment in mir_transform_unaligned_packed_ref 2025-11-07 13:57:37 -07:00
errors.rs const validation: remove check for mutable refs in final value of const 2025-11-09 14:32:01 +01:00
lib.rs #![deny(clippy::manual_let_else)] in some rustc modules 2025-12-12 17:53:19 +00:00