about summary refs log tree commit diff
path: root/compiler/rustc_attr
AgeCommit message (Collapse)AuthorLines
2023-10-31Auto merge of #117377 - dtolnay:deprecatedsince, r=cjgillotbors-22/+62
Store #[deprecated] attribute's `since` value in parsed form This PR implements the first followup bullet listed in https://github.com/rust-lang/rust/pull/117148#issue-1960240108. We centralize error handling to the attribute parsing code in `compiler/rustc_attr/src/builtin.rs`, and thereby remove some awkward error codepaths from later phases of compilation that had to make sense of these #\[deprecated\] attributes, namely `compiler/rustc_passes/src/stability.rs` and `compiler/rustc_middle/src/middle/stability.rs`.
2023-10-30Add method for checking if deprecation is a rustc versionDavid Tolnay-0/+4
2023-10-30Descriptive variant name deprecation versions outside the standard libraryDavid Tolnay-3/+3
2023-10-30Represent absence of 'since' attribute as a variant of DeprecatedSinceDavid Tolnay-15/+17
2023-10-30Preserve deprecation attribute even if 'since' version is missingDavid Tolnay-3/+3
2023-10-30Add a DeprecatedSince::Err variant for versions that fail to parseDavid Tolnay-19/+8
2023-10-30Move deprecation_in_effect to inherent method on DeprecationDavid Tolnay-0/+16
2023-10-29Store version of `deprecated` attribute in structured formDavid Tolnay-16/+45
2023-10-29Rename Since -> StableSince in preparation for a DeprecatedSinceDavid Tolnay-6/+6
2023-10-30Clean up `rustc_*/Cargo.toml`.Nicholas Nethercote-2/+2
- Sort dependencies and features sections. - Add `tidy` markers to the sorted sections so they stay sorted. - Remove empty `[lib`] sections. - Remove "See more keys..." comments. Excluded files: - rustc_codegen_{cranelift,gcc}, because they're external. - rustc_lexer, because it has external use. - stable_mir, because it has external use.
2023-10-26Parse rustc version at compile timeDavid Tolnay-29/+14
2023-10-26Pre-intern a symbol for env!("CFG_RELEASE")David Tolnay-4/+0
2023-10-24Expose a non-Symbol way to access current rustc version stringDavid Tolnay-2/+4
2023-10-24CFG_RELEASE is mandatory, no need for option_envDavid Tolnay-2/+1
The same file already contains another env!("CFG_RELEASE") on line 632, so it's impossible for this crate to compile without CFG_RELEASE set.
2023-10-24Handle structured stable attribute 'since' version in rustdocDavid Tolnay-0/+7
2023-10-24Keep track of #[stable] attribute even if version cannot be parsedDavid Tolnay-7/+11
2023-10-24Store 'since' attribute as parsed VersionDavid Tolnay-9/+19
2023-10-23Validate `since` value in stable attributeDavid Tolnay-8/+21
2023-10-23Validate #[stable(feature = "…")] identifierDavid Tolnay-23/+28
2023-10-22Eliminate redundant .parse_sess in rustc_attr::builtin errorsDavid Tolnay-34/+23
2023-10-22Eliminate rustc_attr::builtin::handle_errorsDavid Tolnay-128/+84
2023-10-16docs: add Rust logo to more compiler cratesMichael Howell-0/+3
c6e6ecb1afea9695a42d0f148ce153536b279eb5 added it to some of the compiler's crates, but avoided adding it to all of them to reduce bit-rot. This commit adds to more.
2023-10-15Auto merge of #116688 - compiler-errors:rustfmt-up, r=WaffleLapkin,Nilstriebbors-4/+9
Format all the let-chains in compiler crates Since rust-lang/rustfmt#5910 has landed, soon we will have support for formatting let-chains (as soon as rustfmt syncs and beta gets bumped). This PR applies the changes [from master rustfmt to rust-lang/rust eagerly](https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/out.20formatting.20of.20prs/near/374997516), so that the next beta bump does not have to deal with a 200+ file diff and can remain concerned with other things like `cfg(bootstrap)` -- #113637 was a pain to land, for example, because of let-else. I will also add this commit to the ignore list after it has landed. The commands that were run -- I'm not great at bash-foo, but this applies rustfmt to every compiler crate, and then reverts the two crates that should probably be formatted out-of-tree. ``` ~/rustfmt $ ls -1d ~/rust/compiler/* | xargs -I@ cargo run --bin rustfmt -- `@/src/lib.rs` --config-path ~/rust --edition=2021 # format all of the compiler crates ~/rust $ git checkout HEAD -- compiler/rustc_codegen_{gcc,cranelift} # revert changes to cg-gcc and cg-clif ``` cc `@rust-lang/rustfmt` r? `@WaffleLapkin` or `@Nilstrieb` who said they may be able to review this purely mechanical PR :> cc `@Mark-Simulacrum` and `@petrochenkov,` who had some thoughts on the order of operations with big formatting changes in https://github.com/rust-lang/rust/pull/95262#issue-1178993801. I think the situation has changed since then, given that let-chains support exists on master rustfmt now, and I'm fairly confident that this formatting PR should land even if *bootstrap* rustfmt doesn't yet format let-chains in order to lessen the burden of the next beta bump.
2023-10-13Format all the let chains in compilerMichael Goulet-4/+9
2023-10-12check-cfg: mention the unexpected name and value in the primary messageUrgau-2/+6
2023-10-06Factor out `insert_or_error`.Nicholas Nethercote-62/+23
It appears identically as a closure in two functions. Also change its return type from `bool` to `Option<()>` so it can be used with `?`.
2023-10-05Rollup merge of #116223 - catandcoder:master, r=cjgillotJubilee-1/+1
Fix misuses of a vs an Fixes the misuse of "a" vs "an", according to English grammatical expectations and using https://www.a-or-an.com/
2023-10-04Remove E0551.Nicholas Nethercote-10/+1
Because it's the same as E0539. Fixes #51489.
2023-10-04Sort `compiler/rustc_attr/Cargo.toml` dependencies.Nicholas Nethercote-5/+5
It's easier to read in sorted order.
2023-10-04Fix misuses of a vs ancui fliter-1/+1
Signed-off-by: cui fliter <imcusg@gmail.com>
2023-08-25Auto merge of #114201 - Centri3:explicit-repr-rust, r=WaffleLapkinbors-0/+2
Allow explicit `#[repr(Rust)]` This is identical to no `repr()` at all. For `Rust, packed` and `Rust, align(x)`, it should be the same as no `Rust` at all (as, afaik, `#[repr(align(16))]` uses the Rust ABI.) The main use case for this is being able to explicitly say "I want to use the Rust ABI" in very very rare circumstances where the first obvious choice would be the C ABI yet is undesirable, which is already possible with functions as `extern "Rust"`. This would be useful for silencing https://github.com/rust-lang/rust-clippy/pull/11253. It's also more consistent with `extern`. The lack of this also tripped me up a bit when I was new to Rust, as I expected this to be possible.
2023-08-11rustc: Move `features` from `Session` to `GlobalCtxt`Vadim Petrochenkov-12/+9
Removes two pieces of mutable state. Follow up to #114622.
2023-08-01[rustc_attr][nit] Replace `filter` + `is_some` with `map_or`.Taras Tsugrii-1/+1
It's slightly shorter and better communicates the intent.
2023-07-29Allow explicit `#[repr(Rust)]`Catherine Flores-0/+2
2023-07-16Add infrastructure `#[rustc_confusables]` attribute to allow targeted许杰友 Jieyou Xu (Joe)-0/+17
"no method" errors on standard library types The standard library developer can annotate methods on e.g. `BTreeSet::push` with `#[rustc_confusables("insert")]`. When the user mistypes `btreeset.push()`, `BTreeSet::insert` will be suggested if there are no other candidates to suggest.
2023-05-25Ensure Fluent messages are in alphabetical orderclubby789-64/+64
2023-05-17Only depend on CFG_VERSION in rustc_interfacejyn-2/+1
this avoids having to rebuild the whole compiler on each commit when `omit-git-hash = false`.
2023-05-05Improve check-cfg diagnostics (part 2)Urgau-2/+5
2023-05-05Improve check-cfg diagnostics (part 1)Urgau-1/+1
2023-05-05Improve internal representation of check-cfgUrgau-18/+16
This is done to simplify to relationship between names() and values() but also make thing clearer (having an Any to represent that any values are allowed) but also to allow the (none) + values expected cases that wasn't possible before.
2023-05-03Restrict `From<S>` for `{D,Subd}iagnosticMessage`.Nicholas Nethercote-1/+1
Currently a `{D,Subd}iagnosticMessage` can be created from any type that impls `Into<String>`. That includes `&str`, `String`, and `Cow<'static, str>`, which are reasonable. It also includes `&String`, which is pretty weird, and results in many places making unnecessary allocations for patterns like this: ``` self.fatal(&format!(...)) ``` This creates a string with `format!`, takes a reference, passes the reference to `fatal`, which does an `into()`, which clones the reference, doing a second allocation. Two allocations for a single string, bleh. This commit changes the `From` impls so that you can only create a `{D,Subd}iagnosticMessage` from `&str`, `String`, or `Cow<'static, str>`. This requires changing all the places that currently create one from a `&String`. Most of these are of the `&format!(...)` form described above; each one removes an unnecessary static `&`, plus an allocation when executed. There are also a few places where the existing use of `&String` was more reasonable; these now just use `clone()` at the call site. As well as making the code nicer and more efficient, this is a step towards possibly using `Cow<'static, str>` in `{D,Subd}iagnosticMessage::{Str,Eager}`. That would require changing the `From<&'a str>` impls to `From<&'static str>`, which is doable, but I'm not yet sure if it's worthwhile.
2023-04-18Add `rustc_fluent_macro` to decouple fluent from `rustc_macros`Nilstrieb-1/+2
Fluent, with all the icu4x it brings in, takes quite some time to compile. `fluent_messages!` is only needed in further downstream rustc crates, but is blocking more upstream crates like `rustc_index`. By splitting it out, we allow `rustc_macros` to be compiled earlier, which speeds up `x check compiler` by about 5 seconds (and even more after the needless dependency on `serde_json` is removed from `rustc_data_structures`).
2023-03-27Bless tidyMaybe Waffle-2/+2
2023-03-24Adjust documentation.Camille GILLOT-14/+18
2023-03-23Separate find_*_stability.Camille GILLOT-113/+93
2023-03-23Extract parse_stability and parse_unstability.Camille GILLOT-205/+224
2023-03-22rustc: Remove unused `Session` argument from some attribute functionsVadim Petrochenkov-4/+4
2023-03-11Simplify message pathsest31-1/+1
This makes it easier to open the messages file while developing on features. The commit was the result of automatted changes: for p in compiler/rustc_*; do mv $p/locales/en-US.ftl $p/messages.ftl; rmdir $p/locales; done for p in compiler/rustc_*; do sed -i "s#\.\./locales/en-US.ftl#../messages.ftl#" $p/src/lib.rs; done
2023-02-22errors: generate typed identifiers in each crateDavid Wood-9/+122
Instead of loading the Fluent resources for every crate in `rustc_error_messages`, each crate generates typed identifiers for its own diagnostics and creates a static which are pulled together in the `rustc_driver` crate and provided to the diagnostic emitter. Signed-off-by: David Wood <david.wood@huawei.com>
2023-02-16Add feature gate for non_lifetime_bindersMichael Goulet-1/+1