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.
Is the display of the inner value supposed to be like that? Shouldn't it be speed?
There was a problem hiding this comment.
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.
See also
rust/tests/rustdoc-json/attrs/inline.rs
Lines 1 to 3 in e4b9d01
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
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