@@ -284,7 +284,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
284
284
parent_scope : & ParentScope < ' a > ,
285
285
finalize : Option < Finalize > ,
286
286
ribs : & [ Rib < ' a > ] ,
287
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
287
+ ignore_binding : Option < NameBinding < ' a > > ,
288
288
) -> Option < LexicalScopeBinding < ' a > > {
289
289
assert ! ( ns == TypeNS || ns == ValueNS ) ;
290
290
let orig_ident = ident;
@@ -378,8 +378,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
378
378
parent_scope : & ParentScope < ' a > ,
379
379
finalize : Option < Finalize > ,
380
380
force : bool ,
381
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
382
- ) -> Result < & ' a NameBinding < ' a > , Determinacy > {
381
+ ignore_binding : Option < NameBinding < ' a > > ,
382
+ ) -> Result < NameBinding < ' a > , Determinacy > {
383
383
bitflags:: bitflags! {
384
384
struct Flags : u8 {
385
385
const MACRO_RULES = 1 << 0 ;
@@ -415,7 +415,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
415
415
// }
416
416
// So we have to save the innermost solution and continue searching in outer scopes
417
417
// to detect potential ambiguities.
418
- let mut innermost_result: Option < ( & NameBinding < ' _ > , Flags ) > = None ;
418
+ let mut innermost_result: Option < ( NameBinding < ' _ > , Flags ) > = None ;
419
419
let mut determinacy = Determinacy :: Determined ;
420
420
421
421
// Go through all the scopes and try to resolve the name.
@@ -717,7 +717,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
717
717
ident : Ident ,
718
718
ns : Namespace ,
719
719
parent_scope : & ParentScope < ' a > ,
720
- ) -> Result < & ' a NameBinding < ' a > , Determinacy > {
720
+ ) -> Result < NameBinding < ' a > , Determinacy > {
721
721
self . resolve_ident_in_module_ext ( module, ident, ns, parent_scope, None , None )
722
722
. map_err ( |( determinacy, _) | determinacy)
723
723
}
@@ -730,8 +730,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
730
730
ns : Namespace ,
731
731
parent_scope : & ParentScope < ' a > ,
732
732
finalize : Option < Finalize > ,
733
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
734
- ) -> Result < & ' a NameBinding < ' a > , Determinacy > {
733
+ ignore_binding : Option < NameBinding < ' a > > ,
734
+ ) -> Result < NameBinding < ' a > , Determinacy > {
735
735
self . resolve_ident_in_module_ext ( module, ident, ns, parent_scope, finalize, ignore_binding)
736
736
. map_err ( |( determinacy, _) | determinacy)
737
737
}
@@ -744,8 +744,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
744
744
ns : Namespace ,
745
745
parent_scope : & ParentScope < ' a > ,
746
746
finalize : Option < Finalize > ,
747
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
748
- ) -> Result < & ' a NameBinding < ' a > , ( Determinacy , Weak ) > {
747
+ ignore_binding : Option < NameBinding < ' a > > ,
748
+ ) -> Result < NameBinding < ' a > , ( Determinacy , Weak ) > {
749
749
let tmp_parent_scope;
750
750
let mut adjusted_parent_scope = parent_scope;
751
751
match module {
@@ -782,8 +782,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
782
782
ns : Namespace ,
783
783
parent_scope : & ParentScope < ' a > ,
784
784
finalize : Option < Finalize > ,
785
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
786
- ) -> Result < & ' a NameBinding < ' a > , Determinacy > {
785
+ ignore_binding : Option < NameBinding < ' a > > ,
786
+ ) -> Result < NameBinding < ' a > , Determinacy > {
787
787
self . resolve_ident_in_module_unadjusted_ext (
788
788
module,
789
789
ident,
@@ -809,8 +809,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
809
809
finalize : Option < Finalize > ,
810
810
// This binding should be ignored during in-module resolution, so that we don't get
811
811
// "self-confirming" import resolutions during import validation and checking.
812
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
813
- ) -> Result < & ' a NameBinding < ' a > , ( Determinacy , Weak ) > {
812
+ ignore_binding : Option < NameBinding < ' a > > ,
813
+ ) -> Result < NameBinding < ' a > , ( Determinacy , Weak ) > {
814
814
let module = match module {
815
815
ModuleOrUniformRoot :: Module ( module) => module,
816
816
ModuleOrUniformRoot :: CrateRootAndExternPrelude => {
@@ -873,13 +873,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
873
873
// binding if it exists. What we really want here is having two separate scopes in
874
874
// a module - one for non-globs and one for globs, but until that's done use this
875
875
// hack to avoid inconsistent resolution ICEs during import validation.
876
- let binding =
877
- [ resolution. binding , resolution. shadowed_glob ] . into_iter ( ) . find_map ( |binding| {
878
- match ( binding, ignore_binding) {
879
- ( Some ( binding) , Some ( ignored) ) if ptr:: eq ( binding, ignored) => None ,
880
- _ => binding,
881
- }
882
- } ) ;
876
+ let binding = [ resolution. binding , resolution. shadowed_glob ]
877
+ . into_iter ( )
878
+ . find_map ( |binding| if binding == ignore_binding { None } else { binding } ) ;
883
879
884
880
if let Some ( Finalize { path_span, report_private, .. } ) = finalize {
885
881
let Some ( binding) = binding else {
@@ -930,7 +926,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
930
926
return Ok ( binding) ;
931
927
}
932
928
933
- let check_usable = |this : & mut Self , binding : & ' a NameBinding < ' a > | {
929
+ let check_usable = |this : & mut Self , binding : NameBinding < ' a > | {
934
930
let usable = this. is_accessible_from ( binding. vis , parent_scope. module ) ;
935
931
if usable { Ok ( binding) } else { Err ( ( Determined , Weak :: No ) ) }
936
932
} ;
@@ -1352,7 +1348,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1352
1348
opt_ns : Option < Namespace > , // `None` indicates a module path in import
1353
1349
parent_scope : & ParentScope < ' a > ,
1354
1350
finalize : Option < Finalize > ,
1355
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
1351
+ ignore_binding : Option < NameBinding < ' a > > ,
1356
1352
) -> PathResult < ' a > {
1357
1353
self . resolve_path_with_ribs ( path, opt_ns, parent_scope, finalize, None , ignore_binding)
1358
1354
}
@@ -1364,7 +1360,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1364
1360
parent_scope : & ParentScope < ' a > ,
1365
1361
finalize : Option < Finalize > ,
1366
1362
ribs : Option < & PerNS < Vec < Rib < ' a > > > > ,
1367
- ignore_binding : Option < & ' a NameBinding < ' a > > ,
1363
+ ignore_binding : Option < NameBinding < ' a > > ,
1368
1364
) -> PathResult < ' a > {
1369
1365
let mut module = None ;
1370
1366
let mut allow_super = true ;
0 commit comments