Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a Method to Seal DiagInner's Suggestions #130116

Merged
merged 1 commit into from
Sep 18, 2024

Conversation

veera-sivarajan
Copy link
Contributor

This PR adds a method on DiagInner called .seal_suggestions() to prevent new suggestions from being added while preserving existing suggestions.

This is useful because currently there is no way to prevent new suggestions from being added to a diagnostic. .disable_suggestions() is the closest but it gets rid of all suggestions before and after the call.

Therefore, .seal_suggestions() can be used when, for example, misspelled keyword is detected and reported. In such cases, we may want to prevent other suggestions from being added to the diagnostic, as they would likely be meaningless once the misspelled keyword is identified. For context: #129899 (comment)

To store an additional state, the type of the suggestions field in DiagInner was changed into a three variant enum. While this change affects files across different crates, care was taken to preserve the existing code's semantics. This is validated by the fact that all UI tests pass without any modifications.

r? chenyukang

@rustbot rustbot added 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 Sep 8, 2024
@chenyukang
Copy link
Member

I think it's mostly ok, how do you think about this?
@estebank

@bors
Copy link
Contributor

bors commented Sep 12, 2024

☔ The latest upstream changes (presumably #130281) made this pull request unmergeable. Please resolve the merge conflicts.

@chenyukang
Copy link
Member

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Sep 18, 2024

📌 Commit 7410057 has been approved by chenyukang

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 18, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 18, 2024
…iaskrgr

Rollup of 4 pull requests

Successful merges:

 - rust-lang#130116 (Implement a Method to Seal `DiagInner`'s Suggestions)
 - rust-lang#130489 (Ensure that `keyword_ident` lint doesn't trigger on `'r#kw` lifetime)
 - rust-lang#130491 (more crash tests)
 - rust-lang#130496 (Fix circular fn_sig queries to correct number of args for methods)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 09b255d into rust-lang:master Sep 18, 2024
6 checks passed
@rustbot rustbot added this to the 1.83.0 milestone Sep 18, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 18, 2024
Rollup merge of rust-lang#130116 - veera-sivarajan:freeze-suggestions, r=chenyukang

Implement a Method to Seal `DiagInner`'s Suggestions

This PR adds a method on `DiagInner` called `.seal_suggestions()` to prevent new suggestions from being added while preserving existing suggestions.

This is useful because currently there is no way to prevent new suggestions from being added to a diagnostic. `.disable_suggestions()` is the closest but it gets rid of all suggestions before and after the call.

Therefore, `.seal_suggestions()` can be used when, for example, misspelled keyword is detected and reported. In such cases, we may want to prevent other suggestions from being added to the diagnostic, as they would likely be meaningless once the misspelled keyword is identified. For context: rust-lang#129899 (comment)

To store an additional state, the type of the `suggestions` field in `DiagInner` was changed into a three variant enum. While this change affects files across different crates, care was taken to preserve the existing code's semantics. This is validated by the fact that all UI tests pass without any modifications.

r? chenyukang
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants