@@ -555,7 +555,6 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
555
555
}
556
556
} )
557
557
. collect :: < Vec < _ > > ( ) ;
558
- let crate_def_id = CRATE_DEF_ID . to_def_id ( ) ;
559
558
// Try to filter out intrinsics candidates, as long as we have
560
559
// some other candidates to suggest.
561
560
let intrinsic_candidates: Vec < _ > = candidates
@@ -566,8 +565,9 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
566
565
. collect ( ) ;
567
566
if candidates. is_empty ( ) {
568
567
// Put them back if we have no more candidates to suggest...
569
- candidates. extend ( intrinsic_candidates) ;
568
+ candidates = intrinsic_candidates;
570
569
}
570
+ let crate_def_id = CRATE_DEF_ID . to_def_id ( ) ;
571
571
if candidates. is_empty ( ) && is_expected ( Res :: Def ( DefKind :: Enum , crate_def_id) ) {
572
572
let mut enum_candidates: Vec < _ > = self
573
573
. r
@@ -1008,7 +1008,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
1008
1008
span : Span ,
1009
1009
) {
1010
1010
if let Some ( ( trait_ref, self_ty) ) =
1011
- self . diagnostic_metadata . currently_processing_impl_trait . clone ( )
1011
+ self . diagnostic_metadata . currently_processing_impl_trait . clone ( )
1012
1012
&& let TyKind :: Path ( _, self_ty_path) = & self_ty. kind
1013
1013
&& let PathResult :: Module ( ModuleOrUniformRoot :: Module ( module) ) =
1014
1014
self . resolve_path ( & Segment :: from_path ( self_ty_path) , Some ( TypeNS ) , None )
@@ -1180,37 +1180,34 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
1180
1180
/// return the span of whole call and the span for all arguments expect the first one (`self`).
1181
1181
fn call_has_self_arg ( & self , source : PathSource < ' _ > ) -> Option < ( Span , Option < Span > ) > {
1182
1182
let mut has_self_arg = None ;
1183
- if let PathSource :: Expr ( Some ( parent) ) = source {
1184
- match & parent. kind {
1185
- ExprKind :: Call ( _, args) if !args. is_empty ( ) => {
1186
- let mut expr_kind = & args[ 0 ] . kind ;
1187
- loop {
1188
- match expr_kind {
1189
- ExprKind :: Path ( _, arg_name) if arg_name. segments . len ( ) == 1 => {
1190
- if arg_name. segments [ 0 ] . ident . name == kw:: SelfLower {
1191
- let call_span = parent. span ;
1192
- let tail_args_span = if args. len ( ) > 1 {
1193
- Some ( Span :: new (
1194
- args[ 1 ] . span . lo ( ) ,
1195
- args. last ( ) . unwrap ( ) . span . hi ( ) ,
1196
- call_span. ctxt ( ) ,
1197
- None ,
1198
- ) )
1199
- } else {
1200
- None
1201
- } ;
1202
- has_self_arg = Some ( ( call_span, tail_args_span) ) ;
1203
- }
1204
- break ;
1183
+ if let PathSource :: Expr ( Some ( parent) ) = source
1184
+ && let ExprKind :: Call ( _, args) = & parent. kind
1185
+ && !args. is_empty ( ) {
1186
+ let mut expr_kind = & args[ 0 ] . kind ;
1187
+ loop {
1188
+ match expr_kind {
1189
+ ExprKind :: Path ( _, arg_name) if arg_name. segments . len ( ) == 1 => {
1190
+ if arg_name. segments [ 0 ] . ident . name == kw:: SelfLower {
1191
+ let call_span = parent. span ;
1192
+ let tail_args_span = if args. len ( ) > 1 {
1193
+ Some ( Span :: new (
1194
+ args[ 1 ] . span . lo ( ) ,
1195
+ args. last ( ) . unwrap ( ) . span . hi ( ) ,
1196
+ call_span. ctxt ( ) ,
1197
+ None ,
1198
+ ) )
1199
+ } else {
1200
+ None
1201
+ } ;
1202
+ has_self_arg = Some ( ( call_span, tail_args_span) ) ;
1205
1203
}
1206
- ExprKind :: AddrOf ( _, _, expr) => expr_kind = & expr. kind ,
1207
- _ => break ,
1204
+ break ;
1208
1205
}
1206
+ ExprKind :: AddrOf ( _, _, expr) => expr_kind = & expr. kind ,
1207
+ _ => break ,
1209
1208
}
1210
1209
}
1211
- _ => ( ) ,
1212
- }
1213
- } ;
1210
+ }
1214
1211
has_self_arg
1215
1212
}
1216
1213
0 commit comments