Skip to content

Commit b94d421

Browse files
committed
Remove fn_has_self_parameter table.
1 parent b0b46c0 commit b94d421

File tree

5 files changed

+16
-17
lines changed

5 files changed

+16
-17
lines changed

compiler/rustc_metadata/src/rmeta/decoder.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use rustc_session::cstore::{
3232
use rustc_session::Session;
3333
use rustc_span::hygiene::{ExpnIndex, MacroKind};
3434
use rustc_span::source_map::{respan, Spanned};
35-
use rustc_span::symbol::{sym, Ident, Symbol};
35+
use rustc_span::symbol::{kw, sym, Ident, Symbol};
3636
use rustc_span::{self, BytePos, ExpnId, Pos, Span, SyntaxContext, DUMMY_SP};
3737

3838
use proc_macro::bridge::client::ProcMacro;
@@ -1087,8 +1087,15 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
10871087
}
10881088
}
10891089

1090-
fn get_fn_has_self_parameter(self, id: DefIndex) -> bool {
1091-
self.root.tables.fn_has_self_parameter.get(self, id).is_some()
1090+
fn get_fn_has_self_parameter(self, id: DefIndex, sess: &'a Session) -> bool {
1091+
self.root
1092+
.tables
1093+
.fn_arg_names
1094+
.get(self, id)
1095+
.unwrap_or_else(LazyArray::empty)
1096+
.decode((self, sess))
1097+
.nth(0)
1098+
.map_or(false, |ident| ident.name == kw::SelfLower)
10921099
}
10931100

10941101
fn get_associated_item_def_ids(
@@ -1105,7 +1112,7 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
11051112
.map(move |child_index| self.local_def_id(child_index))
11061113
}
11071114

1108-
fn get_associated_item(self, id: DefIndex) -> ty::AssocItem {
1115+
fn get_associated_item(self, id: DefIndex, sess: &'a Session) -> ty::AssocItem {
11091116
let name = self.item_name(id);
11101117

11111118
let kind = match self.def_kind(id) {
@@ -1114,7 +1121,7 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
11141121
DefKind::AssocTy => ty::AssocKind::Type,
11151122
_ => bug!("cannot get associated-item of `{:?}`", self.def_key(id)),
11161123
};
1117-
let has_self = self.get_fn_has_self_parameter(id);
1124+
let has_self = self.get_fn_has_self_parameter(id, sess);
11181125
let container = self.root.tables.assoc_container.get(self, id).unwrap();
11191126

11201127
ty::AssocItem {

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ provide! { tcx, def_id, other, cdata,
233233
associated_item_def_ids => {
234234
tcx.arena.alloc_from_iter(cdata.get_associated_item_def_ids(def_id.index, tcx.sess))
235235
}
236-
associated_item => { cdata.get_associated_item(def_id.index) }
236+
associated_item => { cdata.get_associated_item(def_id.index, tcx.sess) }
237237
inherent_impls => { cdata.get_inherent_implementations_for_type(tcx, def_id.index) }
238238
is_foreign_item => { cdata.is_foreign_item(def_id.index) }
239239
item_attrs => { tcx.arena.alloc_from_iter(cdata.get_item_attrs(def_id.index, tcx.sess)) }
@@ -535,8 +535,8 @@ impl CStore {
535535
)
536536
}
537537

538-
pub fn fn_has_self_parameter_untracked(&self, def: DefId) -> bool {
539-
self.get_crate_data(def.krate).get_fn_has_self_parameter(def.index)
538+
pub fn fn_has_self_parameter_untracked(&self, def: DefId, sess: &Session) -> bool {
539+
self.get_crate_data(def.krate).get_fn_has_self_parameter(def.index, sess)
540540
}
541541

542542
pub fn crate_source_untracked(&self, cnum: CrateNum) -> Lrc<CrateSource> {

compiler/rustc_metadata/src/rmeta/encoder.rs

-6
Original file line numberDiff line numberDiff line change
@@ -1335,9 +1335,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
13351335
};
13361336
self.tables.asyncness.set(def_id.index, m_sig.header.asyncness);
13371337
self.tables.constness.set(def_id.index, hir::Constness::NotConst);
1338-
if trait_item.fn_has_self_parameter {
1339-
self.tables.fn_has_self_parameter.set(def_id.index, ());
1340-
}
13411338
}
13421339
ty::AssocKind::Type => {
13431340
self.encode_explicit_item_bounds(def_id);
@@ -1369,9 +1366,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
13691366
hir::Constness::NotConst
13701367
};
13711368
self.tables.constness.set(def_id.index, constness);
1372-
if impl_item.fn_has_self_parameter {
1373-
self.tables.fn_has_self_parameter.set(def_id.index, ());
1374-
}
13751369
}
13761370
ty::AssocKind::Const | ty::AssocKind::Type => {}
13771371
}

compiler/rustc_metadata/src/rmeta/mod.rs

-2
Original file line numberDiff line numberDiff line change
@@ -398,8 +398,6 @@ define_tables! {
398398
macro_rules: Table<DefIndex, ()>,
399399
macro_definition: Table<DefIndex, LazyValue<ast::MacArgs>>,
400400
proc_macro: Table<DefIndex, MacroKind>,
401-
// Slot is full when there is a self parameter.
402-
fn_has_self_parameter: Table<DefIndex, ()>,
403401
module_reexports: Table<DefIndex, LazyArray<ModChild>>,
404402
}
405403

compiler/rustc_resolve/src/build_reduced_graph.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1030,7 +1030,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
10301030
self.insert_field_names(def_id, field_names);
10311031
}
10321032
Res::Def(DefKind::AssocFn, def_id) => {
1033-
if cstore.fn_has_self_parameter_untracked(def_id) {
1033+
if cstore.fn_has_self_parameter_untracked(def_id, self.r.session) {
10341034
self.r.has_self.insert(def_id);
10351035
}
10361036
}

0 commit comments

Comments
 (0)