diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2020-09-22 19:25:27 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2020-10-09 14:44:24 -0700 |
| commit | e89ce461d39686a899cd88e53dc13dcec9445c3f (patch) | |
| tree | 1b1e2d6c999db64d9002d4d1f3d0db20ba8e0f40 /compiler/rustc_resolve | |
| parent | 5217007a2087d8364df8db91d503703c6b0be256 (diff) | |
| download | rust-e89ce461d39686a899cd88e53dc13dcec9445c3f.tar.gz rust-e89ce461d39686a899cd88e53dc13dcec9445c3f.zip | |
Suggest removing bounds even when potential typo
Diffstat (limited to 'compiler/rustc_resolve')
| -rw-r--r-- | compiler/rustc_resolve/src/late/diagnostics.rs | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/compiler/rustc_resolve/src/late/diagnostics.rs b/compiler/rustc_resolve/src/late/diagnostics.rs index ca13d749e52..7bd54447c7d 100644 --- a/compiler/rustc_resolve/src/late/diagnostics.rs +++ b/compiler/rustc_resolve/src/late/diagnostics.rs @@ -439,14 +439,11 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { } } - if !self.type_ascription_suggestion(&mut err, base_span) - && !self.r.add_typo_suggestion(&mut err, typo_sugg, ident_span) - { - // Fallback label. - err.span_label(base_span, fallback_label); - + if !self.type_ascription_suggestion(&mut err, base_span) { + let mut fallback = false; if let PathSource::Trait(AliasPossibility::Maybe) = source { if let Some(bounds @ [_, .., _]) = self.diagnostic_metadata.current_trait_object { + fallback = true; let spans: Vec<Span> = bounds .iter() .map(|bound| bound.span()) @@ -500,16 +497,25 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { } } } - match self.diagnostic_metadata.current_let_binding { - Some((pat_sp, Some(ty_sp), None)) if ty_sp.contains(base_span) && could_be_expr => { - err.span_suggestion_short( - pat_sp.between(ty_sp), - "use `=` if you meant to assign", - " = ".to_string(), - Applicability::MaybeIncorrect, - ); + if !self.r.add_typo_suggestion(&mut err, typo_sugg, ident_span) { + fallback = true; + match self.diagnostic_metadata.current_let_binding { + Some((pat_sp, Some(ty_sp), None)) + if ty_sp.contains(base_span) && could_be_expr => + { + err.span_suggestion_short( + pat_sp.between(ty_sp), + "use `=` if you meant to assign", + " = ".to_string(), + Applicability::MaybeIncorrect, + ); + } + _ => {} } - _ => {} + } + if fallback { + // Fallback label. + err.span_label(base_span, fallback_label); } } (err, candidates) |
