Skip to content

Commit c7f424b

Browse files
committed
resolve: Remove fn_has_self_parameter_untracked
1 parent c05b7bd commit c7f424b

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

-4
Original file line numberDiff line numberDiff line change
@@ -555,10 +555,6 @@ impl CStore {
555555
)
556556
}
557557

558-
pub fn fn_has_self_parameter_untracked(&self, def: DefId, sess: &Session) -> bool {
559-
self.get_crate_data(def.krate).get_fn_has_self_parameter(def.index, sess)
560-
}
561-
562558
pub fn crate_source_untracked(&self, cnum: CrateNum) -> Lrc<CrateSource> {
563559
self.get_crate_data(cnum).source.clone()
564560
}

compiler/rustc_resolve/src/build_reduced_graph.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -1008,11 +1008,6 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
10081008
match res {
10091009
Res::Def(DefKind::Struct, def_id) => self.insert_field_names_extern(def_id),
10101010
Res::Def(DefKind::Union, def_id) => self.insert_field_names_extern(def_id),
1011-
Res::Def(DefKind::AssocFn, def_id) => {
1012-
if self.r.cstore().fn_has_self_parameter_untracked(def_id, self.r.tcx.sess) {
1013-
self.r.has_self.insert(def_id);
1014-
}
1015-
}
10161011
_ => {}
10171012
}
10181013
}
@@ -1411,7 +1406,7 @@ impl<'a, 'b, 'tcx> Visitor<'b> for BuildReducedGraphVisitor<'a, 'b, 'tcx> {
14111406
AssocItemKind::Const(..) => (DefKind::AssocConst, ValueNS),
14121407
AssocItemKind::Fn(box Fn { ref sig, .. }) => {
14131408
if sig.decl.has_self() {
1414-
self.r.has_self.insert(def_id);
1409+
self.r.has_self.insert(local_def_id);
14151410
}
14161411
(DefKind::AssocFn, ValueNS)
14171412
}

compiler/rustc_resolve/src/late/diagnostics.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -1649,7 +1649,17 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
16491649
) {
16501650
let res = binding.res();
16511651
if filter_fn(res) {
1652-
if self.r.has_self.contains(&res.def_id()) {
1652+
let def_id = res.def_id();
1653+
let has_self = match def_id.as_local() {
1654+
Some(def_id) => self.r.has_self.contains(&def_id),
1655+
None => self
1656+
.r
1657+
.tcx
1658+
.fn_arg_names(def_id)
1659+
.first()
1660+
.map_or(false, |ident| ident.name == kw::SelfLower),
1661+
};
1662+
if has_self {
16531663
return Some(AssocSuggestion::MethodWithSelf { called });
16541664
} else {
16551665
match res {

compiler/rustc_resolve/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use rustc_errors::{
3535
use rustc_expand::base::{DeriveResolutions, SyntaxExtension, SyntaxExtensionKind};
3636
use rustc_hir::def::Namespace::{self, *};
3737
use rustc_hir::def::{self, CtorOf, DefKind, DocLinkResMap, LifetimeRes, PartialRes, PerNS};
38-
use rustc_hir::def_id::{CrateNum, DefId, LocalDefId, LocalDefIdMap};
38+
use rustc_hir::def_id::{CrateNum, DefId, LocalDefId, LocalDefIdMap, LocalDefIdSet};
3939
use rustc_hir::def_id::{CRATE_DEF_ID, LOCAL_CRATE};
4040
use rustc_hir::definitions::DefPathData;
4141
use rustc_hir::TraitCandidate;
@@ -881,7 +881,7 @@ pub struct Resolver<'a, 'tcx> {
881881
extern_prelude: FxHashMap<Ident, ExternPreludeEntry<'a>>,
882882

883883
/// N.B., this is used only for better diagnostics, not name resolution itself.
884-
has_self: FxHashSet<DefId>,
884+
has_self: LocalDefIdSet,
885885

886886
/// Names of fields of an item `DefId` accessible with dot syntax.
887887
/// Used for hints during error reporting.
@@ -1249,7 +1249,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
12491249
prelude: None,
12501250
extern_prelude,
12511251

1252-
has_self: FxHashSet::default(),
1252+
has_self: Default::default(),
12531253
field_names: FxHashMap::default(),
12541254
field_visibility_spans: FxHashMap::default(),
12551255

0 commit comments

Comments
 (0)