@@ -322,7 +322,12 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
322
322
}
323
323
324
324
self . suggest_bare_struct_literal ( & mut err) ;
325
- self . suggest_pattern_match_with_let ( & mut err, source, span) ;
325
+
326
+ if self . suggest_pattern_match_with_let ( & mut err, source, span) {
327
+ // Fallback label.
328
+ err. span_label ( base_error. span , & base_error. fallback_label ) ;
329
+ return ( err, Vec :: new ( ) ) ;
330
+ }
326
331
327
332
self . suggest_self_or_self_ref ( & mut err, path, span) ;
328
333
self . detect_assoct_type_constraint_meant_as_path ( & mut err, & base_error) ;
@@ -341,7 +346,11 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
341
346
if !self . type_ascription_suggestion ( & mut err, base_error. span ) {
342
347
let mut fallback =
343
348
self . suggest_trait_and_bounds ( & mut err, source, res, span, & base_error) ;
349
+
350
+ // if we have suggested using pattern matching, then don't add needless suggestions
351
+ // for typos.
344
352
fallback |= self . suggest_typo ( & mut err, source, path, span, & base_error) ;
353
+
345
354
if fallback {
346
355
// Fallback label.
347
356
err. span_label ( base_error. span , & base_error. fallback_label ) ;
@@ -937,7 +946,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
937
946
err : & mut Diagnostic ,
938
947
source : PathSource < ' _ > ,
939
948
span : Span ,
940
- ) {
949
+ ) -> bool {
941
950
if let PathSource :: Expr ( _) = source &&
942
951
let Some ( Expr {
943
952
span : expr_span,
@@ -954,8 +963,10 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
954
963
"let " ,
955
964
Applicability :: MaybeIncorrect ,
956
965
) ;
966
+ return true ;
957
967
}
958
968
}
969
+ false
959
970
}
960
971
961
972
fn get_single_associated_item (
0 commit comments