-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow drivers to supply a list of extra symbols to intern #138682
base: master
Are you sure you want to change the base?
Conversation
r? @fee1-dead rustbot has assigned @fee1-dead. Use |
This comment has been minimized.
This comment has been minimized.
d0ed3d0
to
6547c4d
Compare
Some changes occurred in src/tools/clippy cc @rust-lang/clippy |
This comment has been minimized.
This comment has been minimized.
6547c4d
to
8ab6d63
Compare
This will help a lot when having symbols on Clippy. We usually just batched these and submitted a PR to add 3 or 4 symbols at a time. Strong +1 ! 👀 |
☔ The latest upstream changes (presumably #137930) made this pull request unmergeable. Please resolve the merge conflicts. |
8ab6d63
to
d12c235
Compare
compiler/rustc_macros/src/symbols.rs
Outdated
Interner::prefill(&[ | ||
#prefill_stream | ||
]) | ||
pub(crate) fn fresh(extra: &[&'static str]) -> Self { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would recommend keeping fresh()
but naming a new method for this. Perhaps new_with_extra_preinterned_symbols
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Renamed it to with_extra_symbols
and added some docs
There's only one callsite so the current fresh
would be unused
compiler/rustc_macros/src/symbols.rs
Outdated
@@ -298,7 +298,7 @@ fn symbols_with_errors(input: TokenStream) -> (TokenStream, Vec<syn::Error>) { | |||
let preinterned_symbols_count = entries.len(); | |||
let output = quote! { | |||
const SYMBOL_DIGITS_BASE: u32 = #symbol_digits_base; | |||
const PREINTERNED_SYMBOLS_COUNT: u32 = #preinterned_symbols_count; | |||
pub const PREINTERNED_SYMBOLS_COUNT: u32 = #preinterned_symbols_count; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs a better name and we should document what it really means. Perhaps something like
pub const PREINTERNED_SYMBOLS_COUNT: u32 = #preinterned_symbols_count; | |
/// The number of predefined symbols; this is the the first index for | |
/// extra pre-interned symbols in an Interner created via | |
/// `new_with_extra_preinterned_symbols`. | |
pub const PREDEFINED_SYMBOLS_COUNT: u32 = #predefined_symbols_count; |
d12c235
to
abe6e88
Compare
Allows adding new symbols as
const
s in external drivers, desirable in Clippy so we can use them in patterns to replace code likerust/src/tools/clippy/clippy_lints/src/casts/cast_ptr_alignment.rs
Line 66 in 75530e9
The Clippy change adds a couple symbols as a demo, the exact
clippy_utils
API and replacing other usages can be done on the Clippy side to minimise sync conflicts