about summary refs log tree commit diff
path: root/compiler/rustc_macros/src/symbols.rs
AgeCommit message (Collapse)AuthorLines
2025-06-28Use tidy to sort `sym::*` itemsYotam Ofek-12/+0
2025-05-12Fix typosomahs-1/+1
2025-04-10Allow drivers to supply a list of extra symbols to internAlex Macleod-9/+16
2025-01-07Avoid naming variables `str`Josh Triplett-8/+8
This renames variables named `str` to other names, to make sure `str` always refers to a type. It's confusing to read code where `str` (or another standard type name) is used as an identifier. It also produces misleading syntax highlighting.
2024-09-22Reformat using the new identifier sorting from rustfmtMichael Goulet-1/+1
2024-08-29Add `warn(unreachable_pub)` to `rustc_macros`.Nicholas Nethercote-1/+1
2024-07-29Reformat `use` declarations.Nicholas Nethercote-2/+4
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2023-11-15Re-format code with new rustfmtMark Rousskov-1/+3
2023-11-10Update instructions in a comment.Nicholas Nethercote-10/+3
And avoid duplication.
2023-10-26Fix symbols::tests::test_symbolsDavid Tolnay-0/+8
---- symbols::tests::test_symbols stdout ---- thread 'symbols::tests::test_symbols' panicked at library/proc_macro/src/bridge/client.rs:311:17: procedural macro API is used outside of a procedural macro
2023-10-26Improve span of env-related errorsDavid Tolnay-7/+7
2023-10-26Continue generating other symbols if an expr is not supportedDavid Tolnay-9/+14
2023-10-26Support environment variable for interned Symbol valueDavid Tolnay-4/+57
2023-10-26Move symbols macro map into a structDavid Tolnay-20/+32
2023-10-26Delete counter from symbols proc macro in favor of hashmap as source of truthDavid Tolnay-18/+24
2023-10-26Add a Parse impl for symbol ValueDavid Tolnay-2/+8
2023-10-26Represent symbol value as enum to prepare for supporting env varsDavid Tolnay-4/+10
2023-10-26Touch up syn parsing in symbols macroDavid Tolnay-4/+2
2023-01-05Fix `uninlined_format_args` for some compiler cratesnils-3/+3
Convert all the crates that have had their diagnostic migration completed (except save_analysis because that will be deleted soon and apfloat because of the licensing problem).
2022-08-20symbols: add `is_preinterned` fn to check if symbol was preinterned in compilerklensy-1/+1
2021-09-13Use a separate interner type for UniqueTypeIdbjorn3-1/+1
Using symbol::Interner makes it very easy to mixup UniqueTypeId symbols with the global interner. In fact the Debug implementation of UniqueTypeId did exactly this. Using a separate interner type also avoids prefilling the interner with unused symbols and allow for optimizing the symbol interner for parallel access without negatively affecting the single threaded module codegen.
2021-08-01bump bootstrap compiler to 1.55Pietro Albini-1/+0
2021-07-25clippy::useless_formatMatthias Krüger-1/+1
2021-07-09Fix default_hash_types to use resolved pathCameron Steffen-1/+1
2020-12-17Stop using intermediate macros in definition of symbolsArlie Davis-21/+16
Currently, the rustc_macros::symbols macro generates two `macro_rules!` macros as its output. These two macros are used in rustc_span/src/symbol.rs. This means that each Symbol that we define is represented in the AST of rustc_symbols twice: once in the definition of the `define_symbols!` macro (similarly for the `keywords! macro), and once in the rustc_span::symbols definition. That would be OK if there were only a handful of symbols, but currently we define over 1100 symbols. The definition of the `define_symbols!` macro contains the expanded definition of each symbol, so that's a lot of AST storage wasted on a macro that is used exactly once. This commit removes the `define_symbols` macro, and simply allows the proc macro to directly generate the `rustc_symbols::symbol::sym` module. The benefit is mainly in reducing memory wasted during compilation of rustc itself. It should also reduce memory used by Rust Analyzer. This commit also reduces the size of the AST for symbol definitions, by moving two `#[allow(...)]` attributes from the symbol constants to the `sym` module. This eliminates 2200+ attribute nodes. This commit also eliminates the need for the `digits_array` constant. There's no need to store an array of Symbol values for digits. We can simply define a constant of the base value, and add to that base value.
2020-12-12Improve error handling in `symbols` proc-macroArlie Davis-53/+101
This improves how the `symbols` proc-macro handles errors. If it finds an error in its input, the macro does not panic. Instead, it still produces an output token stream. That token stream will contain `compile_error!(...)` macro invocations. This will still cause compilation to fail (which is what we want), but it will prevent meaningless errors caused by the output not containing symbols that the macro normally generates. This solves a small (but annoying) problem. When you're editing rustc_span/src/symbol.rs, and you get something wrong (dup symbol name, misordered symbol), you want to get only the errors that are relevant, not a burst of errors that are irrelevant. This change also uses the correct Span when reporting errors, so you get errors that point to the correct place in rustc_span/src/symbol.rs where something is wrong. This also adds several unit tests which test the `symbols` proc-macro. This commit also makes it easy to run the `symbols` proc-macro as an ordinary Cargo test. Just run `cargo test`. This makes it easier to do development on the macro itself, such as running it under a debugger. This commit also uses the `Punctuated` type in `syn` for parsing comma-separated lists, rather than doing it manually. The output of the macro is not changed at all by this commit, so rustc should be completely unchanged. This just improves quality of life during development.
2020-09-26Remove unused #[allow(...)] statements from compiler/est31-1/+0
2020-08-30mv compiler to compiler/mark-0/+195