-
Notifications
You must be signed in to change notification settings - Fork 13.5k
rustdoc-json: Add test for #[optimize(..)]
#142916
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
rustdoc-json: Add test for #[optimize(..)]
#142916
Conversation
These commits modify Please ensure that if you've changed the output:
|
This comment has been minimized.
This comment has been minimized.
b813851
to
bec2679
Compare
What makes the test for this attr specifically useful? Since a bunch of them are changing which don't necessarily have tests either? |
Don't get me wrong, not against more tests, was just wondering about specifically this one |
I wrote it while working on rust-lang/rustdoc-types@33243c4, and wanted to see what exactly the difference was. It will also be useful for when #141358 happens. |
@@ -0,0 +1,13 @@ | |||
#![feature(optimize_attribute)] | |||
|
|||
//@ is "$.index[?(@.name=='speed')].attrs" '["#[attr = Optimize(Speed)]"]' |
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.
Is the display of the inner value supposed to be like that? Shouldn't it be speed
?
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.
It's the debug printing of attributes, which mirrors their semantic strucure in HIR, not their semantic structure.
See https://doc.rust-lang.org/nightly/nightly-rustc/rustc_attr_data_structures/enum.OptimizeAttr.html and https://doc.rust-lang.org/nightly/nightly-rustc/rustc_attr_data_structures/enum.AttributeKind.html#variant.Optimize
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.
See also
rust/tests/rustdoc-json/attrs/inline.rs
Lines 1 to 3 in e4b9d01
//@ is "$.index[?(@.name=='just_inline')].attrs" '["#[attr = Inline(Hint)]"]' | |
#[inline] | |
pub fn just_inline() {} |
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 see. How attributes are displayed is incoherent though, which isn't great. For example:
attrs/repr_align.rs:3://@ is "$.index[?(@.name=='Aligned')].attrs" '["#[repr(align(4))]"]'
attrs/export_name_2024.rs:7://@ is "$.index[?(@.name=='example')].attrs" '["#[export_name = \"altered\"]"]'
attrs/repr_c.rs:13://@ is "$.index[?(@.name=='ReprCUnion')].attrs" '["#[repr(C)]"]'
attrs/repr_packed.rs:6://@ is "$.index[?(@.name=='Packed')].attrs" '["#[repr(packed(1))]"]'
keyword_private.rs:8://@ is "$.index[?(@.name=='foo')].attrs" '["#[doc(keyword = \"match\")]"]'
Some of them are "code-like" and other represent the internal type representation in rustc, which is subject to change. Do we plan to uniform it at some point?
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.
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.
Went through #142936. Feel very relieved. Attributes are declared in rustdoc-json-types
so they can't change unexpectedly. Very good idea!
#[optimize(size)] | ||
pub fn size() {} | ||
|
||
//@ is "$.index[?(@.name=='none')].attrs" '["#[attr = Optimize(DoNotOptimize)]"]' |
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.
Especially in this case.
Thanks! @bors r+ rollup |
Rollup of 7 pull requests Successful merges: - #137268 (Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`.) - #142704 (Remove the deprecated unstable `concat_idents!` macro) - #142742 ([win][aarch64] Fix linking statics on Arm64EC, take 2) - #142843 (Enable reproducible-build-2 for Windows MSVC) - #142916 (rustdoc-json: Add test for `#[optimize(..)]`) - #142919 (rustdoc-json: Add test for `#[cold]`) - #142944 (Stats output tweaks) Failed merges: - #142825 (Port `#[track_caller]` to the new attribute system) r? `@ghost` `@rustbot` modify labels: rollup
Follow up to #138291
CC @jdonszelmann
r? @GuillaumeGomez