Skip to content

Can we add a new StableLintExpectationId type so we can remove unstable Hash impls #101751

Description

@oli-obk

Can we add a new StableLintExpectationId type so we can statically prevent the Unstable case? Then we'd have enum LintExpectationId { Unstable { attr_id, lint_index }, Stable(StableLintExpectationId) }, would be a slight pain to rewrite but mostly mechanical.

Might make sense to do it for the return type of normalize() too so we don't accidentally hash the attr_id; that seems worse since it will only invalidate the incremental cache but not be obvious that it's a bug.

Originally posted by @jyn514 in #101620 (comment)

Activity

  1. added
    C-cleanupCategory: PRs that clean code up or issues documenting cleanup.
    on Sep 13, 2022
  2. Urgau commented on Sep 20, 2024

    @Urgau
    Member

    Seems to have been done.

    pub enum LintExpectationId {
    /// Used for lints emitted during the `EarlyLintPass`. This id is not
    /// hash stable and should not be cached.
    Unstable { attr_id: AttrId, lint_index: Option<u16> },
    /// The [`HirId`] that the lint expectation is attached to. This id is
    /// stable and can be cached. The additional index ensures that nodes with
    /// several expectations can correctly match diagnostics to the individual
    /// expectation.
    Stable { hir_id: HirId, attr_index: u16, lint_index: Option<u16> },
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-cleanupCategory: PRs that clean code up or issues documenting cleanup.F-lint_reasons`#![feature(lint_reasons)]`

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions