Skip to content

Check arguments of attributes where no arguments are expected#155193

Open
JonathanBrouwer wants to merge 14 commits intorust-lang:mainfrom
JonathanBrouwer:args_used_check
Open

Check arguments of attributes where no arguments are expected#155193
JonathanBrouwer wants to merge 14 commits intorust-lang:mainfrom
JonathanBrouwer:args_used_check

Conversation

@JonathanBrouwer
Copy link
Copy Markdown
Contributor

@JonathanBrouwer JonathanBrouwer commented Apr 12, 2026

View all comments

This PR does the following:

  • Add a debug assertion to rustc_attr_parsing, to ensure we never forget to check the arguments of a meta item again
  • Removes the unused #[derive(Clone)] from ArgParser as that would break this debug assertion
  • [BREAKING] Properly check that #[inline(always(...))] gets no arguments
  • [BREAKING] Properly check that #[instruction_set(arm::a32(...))] gets no arguments
  • [BREAKING] Properly check that #[macro_export(local_inner_macros(...))] gets no arguments.
    Fixes Invalid value accepted for #[macro_export(local_inner_macros)] #154977
  • [BREAKING] Properly check that #[used(compiler(...))] gets no arguments.
  • Properly check that #[optimize(size(...))] gets no arguments.
  • Properly check that #[coverage(on(...))] gets no arguments.
  • Properly check that #[rustc_dump_layout(debug(...))] gets no arguments.
  • Properly check that #[rustc_abi(debug(...))] gets no arguments.
  • Properly check that #![test_runner(arg(...))] gets no arguments.
  • Properly check that #[rustc_must_implement_one_of(arg(...))] gets no arguments.
  • Properly check that #[allow_internal_unstable(arg(...))] gets no arguments.
  • Properly check that #[unstable_feature_bound(arg(...))] gets no arguments.
  • Properly check that #[rustc_allow_const_fn_unstable(arg(...))] gets no arguments.
  • Properly check that #[rustc_if_this_changed(arg(...))] gets no arguments.
  • Properly check that #[rustc_then_this_would_need(arg(...))] gets no arguments.

r? @jdonszelmann

@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 12, 2026

⚠️ #[rustc_allow_const_fn_unstable] needs careful audit to avoid accidentally exposing unstable
implementation details on stable.

cc @rust-lang/wg-const-eval

Some changes occurred in compiler/rustc_attr_parsing

cc @jdonszelmann

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Apr 12, 2026
@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@bors try

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Apr 12, 2026
Check arguments of attributes where no arguments are expected
@JonathanBrouwer JonathanBrouwer added S-blocked Status: Blocked on something else such as an RFC or other implementation work. needs-crater This change needs a crater run to check for possible breakage in the ecosystem. labels Apr 12, 2026
@rust-log-analyzer

This comment has been minimized.

@JonathanBrouwer JonathanBrouwer force-pushed the args_used_check branch 2 times, most recently from 3231b2a to 15b2265 Compare April 12, 2026 11:18
@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@bors try cancel
@bors try

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented Apr 12, 2026

Try build cancelled. Cancelled workflows:

rust-bors Bot pushed a commit that referenced this pull request Apr 12, 2026
Check arguments of attributes where no arguments are expected
@rust-bors

This comment has been minimized.

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented Apr 12, 2026

☀️ Try build successful (CI)
Build commit: b98202a (b98202ad067d72e45cec8be3d5c15d86ef0fd086, parent: 540f43a224317d894a9a0710a8d67704f179a33c)

@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@craterbot check

@craterbot
Copy link
Copy Markdown
Collaborator

👌 Experiment pr-155193 created and queued.
🤖 Automatically detected try build b98202a
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-crater Status: Waiting on a crater run to be completed. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. S-blocked Status: Blocked on something else such as an RFC or other implementation work. labels Apr 12, 2026
Comment thread compiler/rustc_attr_parsing/src/interface.rs Outdated
@rust-bors

This comment has been minimized.

@rustbot

This comment has been minimized.

@rust-bors

This comment has been minimized.

@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels May 1, 2026
@traviscross traviscross added the P-lang-drag-1 Lang team prioritization drag level 1. https://rust-lang.zulipchat.com/#narrow/channel/410516-t-lang label May 6, 2026
@traviscross
Copy link
Copy Markdown
Contributor

Thanks @JonathanBrouwer. Looks good to me. I propose we do it, accepting the breakage.

@rfcbot fcp merge lang

@rust-rfcbot
Copy link
Copy Markdown
Collaborator

rust-rfcbot commented May 6, 2026

Team member @traviscross has proposed to merge this. The next step is review by the rest of the tagged team members:

No concerns currently listed.

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
See this document for info about what commands tagged team members can give me.

@rust-rfcbot rust-rfcbot added proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. labels May 6, 2026
@traviscross
Copy link
Copy Markdown
Contributor

The Reference already looks correct as it relates to this change.

cc @rust-lang/lang-docs @rust-lang/fls

@joshtriplett
Copy link
Copy Markdown
Member

Crater results seem reasonable. The one regression has no reverse-deps. And the author already sent a PR to that crate. ❤️

@tmandry
Copy link
Copy Markdown
Member

tmandry commented May 6, 2026

Given that there is breakage, let's ask for T-lang approval: @rust-lang/lang

To clarify the process (this may be what you meant), we should have lang approval for any breaking change, even if there are no crater regressions.

Thank you for the cleanup and work here!

@rfcbot reviewed

@rust-rfcbot rust-rfcbot added final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. and removed proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. labels May 6, 2026
@rust-rfcbot
Copy link
Copy Markdown
Collaborator

🔔 This is now entering its final comment period, as per the review above. 🔔

@traviscross traviscross added I-lang-radar Items that are on lang's radar and will need eventual work or consideration. and removed I-lang-nominated Nominated for discussion during a lang team meeting. I-lang-easy-decision Issue: The decision needed by the team is conjectured to be easy; this does not imply nomination P-lang-drag-1 Lang team prioritization drag level 1. https://rust-lang.zulipchat.com/#narrow/channel/410516-t-lang labels May 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. I-lang-radar Items that are on lang's radar and will need eventual work or consideration. needs-crater This change needs a crater run to check for possible breakage in the ecosystem. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Invalid value accepted for #[macro_export(local_inner_macros)]

10 participants