Skip to content

Remaining issues after the #[doc] attribute port #149865

@JonathanBrouwer

Description

@JonathanBrouwer

From #149645

  • Some part of cfg_old.rs are likely unused now, so they should be removed.
  • Not all error/lints are emitted at the same time anymore, making them kinda less useful considering that you need to run and fix rustc/rustdoc multiple times to get through all of them.
  • For coherency with the other attribute errors, I didn't modify the default output too much, meaning that we have some new messages now. I'll likely come back to that to check if the previous ones were better in a case-by-case approach.
  • doc(test(attr(...))) is handled in a horrifying manner currently. Until we can handle it correctly with the Attribute system, it'll remain that thing we're all very ashamed of. 😈
  • A type in rustdoc got its size increased, I'll check the impact on performance. But in any case, I plan to improve it in a follow-up so should be "ok".
  • Because of error reporting, some fields of Doc are suboptimal, like inline which instead of being an Option is a ThinVec because we report the error later on. Part of the things I'm not super happy about but can be postponed to future me.
  • In src/librustdoc/clean/cfg.rs, the pub(crate) fn parse(cfg: &MetaItemInner) -> Result<Cfg, InvalidCfgError> { function should be removed once cfg_trace has been ported to new cfg API.
  • Size of type DocFragment went from 32 to 48. Would be nice to get it back to 32.
  • malformed `doc` attribute input wasn't meant for so many candidates, should be improved.
  • See how many of the checks in check_attr we can move to attribute parsing
  • Port target checking to be in the attribute parser completely
  • Fix target checking for doc(alias) on fields & patterns

Metadata

Metadata

Labels

A-attributesArea: Attributes (`#[…]`, `#![…]`)C-cleanupCategory: PRs that clean code up or issues documenting cleanup.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions