Skip to content

Rollup of 8 pull requests #142564

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

Closed
wants to merge 27 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1e10dfc
Add all rustc_std_internal_symbol to symbols.o
bjorn3 May 8, 2025
2d2d70f
Remove dependency injection for the panic runtime
bjorn3 May 8, 2025
3a7ae67
Stop handling explicit dependencies on the panic runtime
bjorn3 May 8, 2025
f8d1bfa
Avoid exporting panic_unwind as stdlib cargo feature
bjorn3 May 8, 2025
6df5456
Make comment on activate_injected_dep a doc comment
bjorn3 May 9, 2025
c85760c
Fix Debug for Location.
m-ou-se Jun 11, 2025
5b50e0b
Add support for snapshot tests with insta
Kobzol Jun 12, 2025
efaf3eb
ignore `run-make` tests that need `std` on `no_std` targets
folkertdev Jun 12, 2025
40c2ca9
Move `shared_helpers` test to a dedicated module
Kobzol Jun 12, 2025
2591571
Stop using Config for `tempdir-as-a-service` in `build_stamp` tests
Kobzol Jun 12, 2025
8540188
Remove `RefCell` from `cc/cxx/ar/ranlib`
Kobzol Jun 12, 2025
dbe15e3
Remove environment variable modification in `test_default_compiler_wasi`
Kobzol Jun 12, 2025
a71b463
Move submodule path cache from `parse_gitmodules` to `Builder`
Kobzol Jun 12, 2025
983fe4f
Simplify `configure_with_args`
Kobzol Jun 12, 2025
6feb9b7
Add lightweight snapshot testing for bootstrap tests
Kobzol Jun 12, 2025
1ac89f1
Refactor `rustc_attr_data_structures` documentation
xizheyin Jun 5, 2025
a0db28f
clarify `rustc_do_not_const_check` comment
fee1-dead Jun 15, 2025
3871203
Stabilize "file_lock" feature
cberner May 29, 2025
5ac1cd9
Test Debug for Location.
m-ou-se Jun 11, 2025
ab25464
Rollup merge of #140809 - bjorn3:panic_runtime_cleanup, r=wesleywiser…
tgross35 Jun 16, 2025
a5db6b9
Rollup merge of #142082 - xizheyin:rustc_attr_data_structures, r=jdon…
tgross35 Jun 16, 2025
f89b2fa
Rollup merge of #142125 - cberner:file_lock_stable, r=ChrisDenton
tgross35 Jun 16, 2025
a5e9bfd
Rollup merge of #142373 - m-ou-se:debug-for-location, r=tgross35
tgross35 Jun 16, 2025
f6c4c33
Rollup merge of #142414 - folkertdev:ignore-nostd-tests, r=jieyouxu
tgross35 Jun 16, 2025
c62f7be
Rollup merge of #142416 - Kobzol:bootstrap-cleanup-2, r=jieyouxu
tgross35 Jun 16, 2025
75913ed
Rollup merge of #142431 - Kobzol:bootstrap-snapshot-tests, r=jieyouxu
tgross35 Jun 16, 2025
1b68bed
Rollup merge of #142528 - fee1-dead-contrib:push-rlxklunqkwmv, r=Ralf…
tgross35 Jun 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Refactor rustc_attr_data_structures documentation
Signed-off-by: xizheyin <[email protected]>
  • Loading branch information
xizheyin committed Jun 15, 2025
commit 1ac89f190fa8a77d4503138f5bc7667c253457f6
58 changes: 44 additions & 14 deletions compiler/rustc_attr_data_structures/src/attributes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,24 +130,54 @@ impl Deprecation {
}
}

/// Represent parsed, *built in*, inert attributes.
/// Represents parsed *built-in* inert attributes.
///
/// That means attributes that are not actually ever expanded.
/// For more information on this, see the module docs on the [`rustc_attr_parsing`] crate.
/// They're instead used as markers, to guide the compilation process in various way in most every stage of the compiler.
/// These are kept around after the AST, into the HIR and further on.
/// ## Overview
/// These attributes are markers that guide the compilation process and are never expanded into other code.
/// They persist throughout the compilation phases, from AST to HIR and beyond.
///
/// The word "parsed" could be a little misleading here, because the parser already parses
/// attributes early on. However, the result, an [`ast::Attribute`]
/// is only parsed at a high level, still containing a token stream in many cases. That is
/// because the structure of the contents varies from attribute to attribute.
/// With a parsed attribute I mean that each attribute is processed individually into a
/// final structure, which on-site (the place where the attribute is useful for, think the
/// the place where `must_use` is checked) little to no extra parsing or validating needs to
/// happen.
/// ## Attribute Processing
/// While attributes are initially parsed by [`rustc_parse`] into [`ast::Attribute`], they still contain raw token streams
/// because different attributes have different internal structures. This enum represents the final,
/// fully parsed form of these attributes, where each variant contains contains all the information and
/// structure relevant for the specific attribute.
///
/// For more docs, look in [`rustc_attr_parsing`].
/// Some attributes can be applied multiple times to the same item, and they are "collapsed" into a single
/// semantic attribute. For example:
/// ```rust
/// #[repr(C)]
/// #[repr(packed)]
/// struct S { }
/// ```
/// This is equivalent to `#[repr(C, packed)]` and results in a single [`AttributeKind::Repr`] containing
/// both `C` and `packed` annotations. This collapsing happens during parsing and is reflected in the
/// data structures defined in this enum.
///
/// ## Usage
/// These parsed attributes are used throughout the compiler to:
/// - Control code generation (e.g., `#[repr]`)
/// - Mark API stability (`#[stable]`, `#[unstable]`)
/// - Provide documentation (`#[doc]`)
/// - Guide compiler behavior (e.g., `#[allow_internal_unstable]`)
///
/// ## Note on Attribute Organization
/// Some attributes like `InlineAttr`, `OptimizeAttr`, and `InstructionSetAttr` are defined separately
/// from this enum because they are used in specific compiler phases (like code generation) and don't
/// need to persist throughout the entire compilation process. They are typically processed and
/// converted into their final form earlier in the compilation pipeline.
///
/// For example:
/// - `InlineAttr` is used during code generation to control function inlining
/// - `OptimizeAttr` is used to control optimization levels
/// - `InstructionSetAttr` is used for target-specific code generation
///
/// These attributes are handled by their respective compiler passes in the [`rustc_codegen_ssa`] crate
/// and don't need to be preserved in the same way as the attributes in this enum.
///
/// For more details on attribute parsing, see the [`rustc_attr_parsing`] crate.
///
/// [`rustc_parse`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse/index.html
/// [`rustc_codegen_ssa`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_codegen_ssa/index.html
/// [`rustc_attr_parsing`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_attr_parsing/index.html
#[derive(Clone, Debug, HashStable_Generic, Encodable, Decodable, PrintAttribute)]
pub enum AttributeKind {
Expand Down
4 changes: 4 additions & 0 deletions compiler/rustc_attr_data_structures/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
//! Data structures for representing parsed attributes in the Rust compiler.
//! For detailed documentation about attribute processing,
//! see [rustc_attr_parsing](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_attr_parsing/index.html).

// tidy-alphabetical-start
#![allow(internal_features)]
#![doc(rust_logo)]
Expand Down
Loading