Rollup merge of #102210 - notriddle:notriddle/did-you-mean, r=cjgillot
diagnostics: avoid syntactically invalid suggestion in if conditionals Fixes #101065
This commit is contained in:
commit
81eb35f18a
4 changed files with 61 additions and 0 deletions
|
@ -417,6 +417,16 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
hir::def::CtorKind::Const => unreachable!(),
|
||||
};
|
||||
|
||||
// Suggest constructor as deep into the block tree as possible.
|
||||
// This fixes https://github.com/rust-lang/rust/issues/101065,
|
||||
// and also just helps make the most minimal suggestions.
|
||||
let mut expr = expr;
|
||||
while let hir::ExprKind::Block(block, _) = &expr.kind
|
||||
&& let Some(expr_) = &block.expr
|
||||
{
|
||||
expr = expr_
|
||||
}
|
||||
|
||||
vec![
|
||||
(expr.span.shrink_to_lo(), format!("{prefix}{variant}{open}")),
|
||||
(expr.span.shrink_to_hi(), close.to_owned()),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue