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

Be more precise when suggesting removal of parens on unit ctor #99350

Merged
merged 2 commits into from
Jul 18, 2022

Conversation

compiler-errors
Copy link
Member

@rustbot rustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jul 16, 2022
@rust-highfive
Copy link
Collaborator

r? @fee1-dead

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 16, 2022
= self.typeck_results.borrow().qpath_res(qpath, callee_expr.hir_id)
// Only suggest removing parens if there are no arguments
&& arg_exprs.is_empty()
&& let Ok(path) = self.tcx.sess.source_map().span_to_snippet(callee_expr.span)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to use tcx.def_path_str instead of span_to_snippet, but that does not preserve aliases, and causes regressions in src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs by changing Alias::Unit to Enum::Unit 😢

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could possibly find a way to format qpath into a string by joining all of its segments, but that's a bit overkill and this PR does not represent a regression in the status quo.

Copy link
Member

@fee1-dead fee1-dead Jul 17, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It wouldn't work well with improperly formatted code, right? If the path is a macro expansion what would happen..? To me I don't think it should preserve the alias path.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, you're right. If we had like

path::
split::
up::
over_many_lines

then we shouldn't use that in diagnostics.

Copy link
Member Author

@compiler-errors compiler-errors Jul 17, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just used rustc_hir_pretty which does hir -> string for us. Avoids weirdness like:

enum Enum { Braced {} }
type Alias = Enum;

fn main() {
    Alias::
    Braced;
}
error[[E0533]](https://doc.rust-lang.org/stable/error-index.html#E0533): expected unit struct, unit variant or constant, found struct variant `Alias::
                  Braced`
 --> src/main.rs:5:5
  |
5 | /     Alias::
6 | |     Braced;
  | |__________^

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, please add that as a test.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@fee1-dead
Copy link
Member

@bors r+

@bors
Copy link
Contributor

bors commented Jul 17, 2022

📌 Commit 7a45a60 has been approved by fee1-dead

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 Jul 17, 2022
JohnTitor added a commit to JohnTitor/rust that referenced this pull request Jul 17, 2022
…-dead

Be more precise when suggesting removal of parens on unit ctor

* Fixes rust-lang#99240 by only suggesting to remove parens on path exprs, not arbitrary expressions with enum type
* Generalizes by suggesting removal of parens on unit struct, too, because why not?
This was referenced Jul 17, 2022
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 18, 2022
Rollup of 6 pull requests

Successful merges:

 - rust-lang#98383 (Remove restrictions on compare-exchange memory ordering.)
 - rust-lang#99350 (Be more precise when suggesting removal of parens on unit ctor)
 - rust-lang#99356 (Do not constraint TAITs when checking impl/trait item compatibility)
 - rust-lang#99360 (Do not ICE when we have `-Zunpretty=expanded` with invalid ABI)
 - rust-lang#99373 (Fix source code sidebar tree auto-expand)
 - rust-lang#99374 (Fix doc for `rchunks_exact`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit cc35c78 into rust-lang:master Jul 18, 2022
@rustbot rustbot added this to the 1.64.0 milestone Jul 18, 2022
@compiler-errors compiler-errors deleted the issue-99240 branch August 11, 2023 20:05
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
5 participants