mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-01 12:24:29 +00:00
Merge pull request #19127 from ChayimFriedman2/different-generic-args
feat: Refactor path lowering and serve a new path diagnostic
This commit is contained in:
commit
09db657439
19 changed files with 1222 additions and 1144 deletions
|
|
@ -13,15 +13,35 @@ use crate::{
|
|||
|
||||
macro_rules! define_symbols {
|
||||
(@WITH_NAME: $($alias:ident = $value:literal,)* @PLAIN: $($name:ident,)*) => {
|
||||
// Ideally we would be emitting `const` here, but then we no longer have stable addresses
|
||||
// which is what we are relying on for equality! In the future if consts can refer to
|
||||
// statics we should swap these for `const`s and have the string literal being pointed
|
||||
// to be statics to refer to such that their address is stable.
|
||||
// We define symbols as both `const`s and `static`s because some const code requires const symbols,
|
||||
// but code from before the transition relies on the lifetime of the predefined symbols and making them
|
||||
// `const`s make it error (because now they're temporaries). In the future we probably should only
|
||||
// use consts.
|
||||
|
||||
/// Predefined symbols as `const`s (instead of the default `static`s).
|
||||
pub mod consts {
|
||||
use super::{Symbol, TaggedArcPtr};
|
||||
|
||||
// The strings should be in `static`s so that symbol equality holds.
|
||||
$(
|
||||
pub const $name: Symbol = {
|
||||
static SYMBOL_STR: &str = stringify!($name);
|
||||
Symbol { repr: TaggedArcPtr::non_arc(&SYMBOL_STR) }
|
||||
};
|
||||
)*
|
||||
$(
|
||||
pub const $alias: Symbol = {
|
||||
static SYMBOL_STR: &str = $value;
|
||||
Symbol { repr: TaggedArcPtr::non_arc(&SYMBOL_STR) }
|
||||
};
|
||||
)*
|
||||
}
|
||||
|
||||
$(
|
||||
pub static $name: Symbol = Symbol { repr: TaggedArcPtr::non_arc(&stringify!($name)) };
|
||||
pub static $name: Symbol = consts::$name;
|
||||
)*
|
||||
$(
|
||||
pub static $alias: Symbol = Symbol { repr: TaggedArcPtr::non_arc(&$value) };
|
||||
pub static $alias: Symbol = consts::$alias;
|
||||
)*
|
||||
|
||||
|
||||
|
|
@ -428,6 +448,7 @@ define_symbols! {
|
|||
rustc_layout_scalar_valid_range_start,
|
||||
rustc_legacy_const_generics,
|
||||
rustc_macro_transparency,
|
||||
rustc_paren_sugar,
|
||||
rustc_reallocator,
|
||||
rustc_reservation_impl,
|
||||
rustc_safe_intrinsic,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue