Skip to content

Complete move to "diagnostic items" #66075

Closed
@RalfJung

Description

@RalfJung

With #60966, we can avoid lang items and manual path matching for lints, and instead mark them in the code. But I think there are some places that could still be ported to the new system:

  • The InvalidValue lint uses match_def_path for transmute -- somehow, using a diagnostic item did not work (is_diagnostic_item returns false).
  • Aren't Rc and Arc lang items just for diagnostics? Here's where they get used:
    try_alt_rcvr(&mut err, rcvr_t, lang_items::Arc);
    try_alt_rcvr(&mut err, rcvr_t, lang_items::Rc);

    And, indirectly, at
    if ty.is_rc() {
    format!("an `Rc`")
    } else if ty.is_arc() {
    format!("an `Arc`")

    So, I am not sure if those should be lang items or diagnostic items now? No language semantics is attached to them, the uses above are just in error messages from what I can see.
  • There's also no language semantics attached to MaybeUninit; it is a lang item because it gets used in layout construction for generators. Doesn't really fit "diagnostics item" either, though. (EDIT: decided this makes more sense to remain a lang item)

@oli-obk @Centril any thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-cleanupCategory: PRs that clean code up or issues documenting cleanup.T-compilerRelevant to the compiler 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