Skip to content

Commit 5a60194

Browse files
committed
don't use a mutable field where parameter passing will do
1 parent eedaa94 commit 5a60194

File tree

1 file changed

+20
-17
lines changed
  • src/librustc_typeck/check/method

1 file changed

+20
-17
lines changed

src/librustc_typeck/check/method/probe.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ struct ProbeContext<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> {
5555
inherent_candidates: Vec<Candidate<'tcx>>,
5656
extension_candidates: Vec<Candidate<'tcx>>,
5757
impl_dups: FxHashSet<DefId>,
58-
import_id: Option<ast::NodeId>,
5958

6059
/// Collects near misses when the candidate functions are missing a `self` keyword and is only
6160
/// used for error reporting
@@ -351,7 +350,6 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
351350
inherent_candidates: Vec::new(),
352351
extension_candidates: Vec::new(),
353352
impl_dups: FxHashSet(),
354-
import_id: None,
355353
steps: Rc::new(steps),
356354
opt_simplified_steps: opt_simplified_steps,
357355
static_candidates: Vec::new(),
@@ -530,7 +528,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
530528
xform_self_ty: xform_self_ty,
531529
item: item,
532530
kind: InherentImplCandidate(impl_substs, obligations),
533-
import_id: self.import_id,
531+
import_id: None,
534532
});
535533
}
536534
}
@@ -559,7 +557,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
559557
xform_self_ty: xform_self_ty,
560558
item: item,
561559
kind: ObjectCandidate,
562-
import_id: this.import_id,
560+
import_id: None,
563561
});
564562
});
565563
}
@@ -609,7 +607,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
609607
xform_self_ty: xform_self_ty,
610608
item: item,
611609
kind: WhereClauseCandidate(poly_trait_ref),
612-
import_id: this.import_id,
610+
import_id: None,
613611
});
614612
});
615613
}
@@ -644,9 +642,8 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
644642
for trait_candidate in applicable_traits {
645643
let trait_did = trait_candidate.def_id;
646644
if duplicates.insert(trait_did) {
647-
self.import_id = trait_candidate.import_id;
648-
let result = self.assemble_extension_candidates_for_trait(trait_did);
649-
self.import_id = None;
645+
let import_id = trait_candidate.import_id;
646+
let result = self.assemble_extension_candidates_for_trait(import_id, trait_did);
650647
result?;
651648
}
652649
}
@@ -658,7 +655,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
658655
let mut duplicates = FxHashSet();
659656
for trait_info in suggest::all_traits(self.ccx) {
660657
if duplicates.insert(trait_info.def_id) {
661-
self.assemble_extension_candidates_for_trait(trait_info.def_id)?;
658+
self.assemble_extension_candidates_for_trait(None, trait_info.def_id)?;
662659
}
663660
}
664661
Ok(())
@@ -682,6 +679,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
682679
}
683680

684681
fn assemble_extension_candidates_for_trait(&mut self,
682+
import_id: Option<ast::NodeId>,
685683
trait_def_id: DefId)
686684
-> Result<(), MethodError<'tcx>> {
687685
debug!("assemble_extension_candidates_for_trait(trait_def_id={:?})",
@@ -695,19 +693,21 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
695693
continue;
696694
}
697695

698-
self.assemble_extension_candidates_for_trait_impls(trait_def_id, item.clone());
696+
self.assemble_extension_candidates_for_trait_impls(import_id, trait_def_id,
697+
item.clone());
699698

700-
self.assemble_closure_candidates(trait_def_id, item.clone())?;
699+
self.assemble_closure_candidates(import_id, trait_def_id, item.clone())?;
701700

702-
self.assemble_projection_candidates(trait_def_id, item.clone());
701+
self.assemble_projection_candidates(import_id, trait_def_id, item.clone());
703702

704-
self.assemble_where_clause_candidates(trait_def_id, item.clone());
703+
self.assemble_where_clause_candidates(import_id, trait_def_id, item.clone());
705704
}
706705

707706
Ok(())
708707
}
709708

710709
fn assemble_extension_candidates_for_trait_impls(&mut self,
710+
import_id: Option<ast::NodeId>,
711711
trait_def_id: DefId,
712712
item: ty::AssociatedItem) {
713713
let trait_def = self.tcx.lookup_trait_def(trait_def_id);
@@ -751,7 +751,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
751751
xform_self_ty: xform_self_ty,
752752
item: item.clone(),
753753
kind: ExtensionImplCandidate(impl_def_id, impl_substs, obligations),
754-
import_id: self.import_id,
754+
import_id: import_id,
755755
});
756756
});
757757
}
@@ -777,6 +777,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
777777
}
778778

779779
fn assemble_closure_candidates(&mut self,
780+
import_id: Option<ast::NodeId>,
780781
trait_def_id: DefId,
781782
item: ty::AssociatedItem)
782783
-> Result<(), MethodError<'tcx>> {
@@ -840,14 +841,15 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
840841
xform_self_ty: xform_self_ty,
841842
item: item.clone(),
842843
kind: TraitCandidate,
843-
import_id: self.import_id,
844+
import_id: import_id,
844845
});
845846
}
846847

847848
Ok(())
848849
}
849850

850851
fn assemble_projection_candidates(&mut self,
852+
import_id: Option<ast::NodeId>,
851853
trait_def_id: DefId,
852854
item: ty::AssociatedItem) {
853855
debug!("assemble_projection_candidates(\
@@ -895,14 +897,15 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
895897
xform_self_ty: xform_self_ty,
896898
item: item.clone(),
897899
kind: TraitCandidate,
898-
import_id: self.import_id,
900+
import_id: import_id,
899901
});
900902
}
901903
}
902904
}
903905
}
904906

905907
fn assemble_where_clause_candidates(&mut self,
908+
import_id: Option<ast::NodeId>,
906909
trait_def_id: DefId,
907910
item: ty::AssociatedItem) {
908911
debug!("assemble_where_clause_candidates(trait_def_id={:?})",
@@ -923,7 +926,7 @@ impl<'a, 'gcx, 'tcx> ProbeContext<'a, 'gcx, 'tcx> {
923926
xform_self_ty: xform_self_ty,
924927
item: item.clone(),
925928
kind: WhereClauseCandidate(poly_bound),
926-
import_id: self.import_id,
929+
import_id: import_id,
927930
});
928931
}
929932
}

0 commit comments

Comments
 (0)