Rollup merge of #101100 - compiler-errors:generalize-call-suggestions, r=petrochenkov
Make call suggestions more general and more accurate Cleans up some suggestions that have to do with adding `()` to make typeck happy. 1. Drive-by rename of `expr_t` to `base_ty` since it's the type of the `base_expr` 1. Autoderef until we get to a callable type in `suggest_fn_call`. 1. Don't erroneously suggest calling constructor when a method/field does not exist on it. 1. Suggest calling a method receiver if its function output has a method (e.g. `fn.method()` => `fn().method()`) 1. Extend call suggestions to type parameters, fn pointers, trait objects where possible 1. Suggest calling in operators too (fixes #101054) 1. Use `/* {ty} */` as argument placeholder instead of just `_`, which is confusing and makes suggestions look less like `if let` syntax.
This commit is contained in:
commit
b8b2f88a04
35 changed files with 609 additions and 416 deletions
|
@ -1249,9 +1249,13 @@ impl HandlerInner {
|
|||
}
|
||||
|
||||
fn treat_err_as_bug(&self) -> bool {
|
||||
self.flags
|
||||
.treat_err_as_bug
|
||||
.map_or(false, |c| self.err_count() + self.lint_err_count >= c.get())
|
||||
self.flags.treat_err_as_bug.map_or(false, |c| {
|
||||
self.err_count()
|
||||
+ self.lint_err_count
|
||||
+ self.delayed_span_bugs.len()
|
||||
+ self.delayed_good_path_bugs.len()
|
||||
>= c.get()
|
||||
})
|
||||
}
|
||||
|
||||
fn print_error_count(&mut self, registry: &Registry) {
|
||||
|
@ -1407,7 +1411,14 @@ impl HandlerInner {
|
|||
// This is technically `self.treat_err_as_bug()` but `delay_span_bug` is called before
|
||||
// incrementing `err_count` by one, so we need to +1 the comparing.
|
||||
// FIXME: Would be nice to increment err_count in a more coherent way.
|
||||
if self.flags.treat_err_as_bug.map_or(false, |c| self.err_count() + 1 >= c.get()) {
|
||||
if self.flags.treat_err_as_bug.map_or(false, |c| {
|
||||
self.err_count()
|
||||
+ self.lint_err_count
|
||||
+ self.delayed_span_bugs.len()
|
||||
+ self.delayed_good_path_bugs.len()
|
||||
+ 1
|
||||
>= c.get()
|
||||
}) {
|
||||
// FIXME: don't abort here if report_delayed_bugs is off
|
||||
self.span_bug(sp, msg);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue