// small trait to work around different signature queries all being defined via
// the macro above.
trait IntoArgs {
- fn into_args(self) -> (DefId, DefId);
+ type Other;
+ fn into_args(self) -> (DefId, Self::Other);
}
impl IntoArgs for DefId {
- fn into_args(self) -> (DefId, DefId) {
- (self, self)
+ type Other = ();
+ fn into_args(self) -> (DefId, ()) {
+ (self, ())
}
}
impl IntoArgs for CrateNum {
- fn into_args(self) -> (DefId, DefId) {
- (self.as_def_id(), self.as_def_id())
+ type Other = ();
+ fn into_args(self) -> (DefId, ()) {
+ (self.as_def_id(), ())
}
}
impl IntoArgs for (CrateNum, DefId) {
+ type Other = DefId;
fn into_args(self) -> (DefId, DefId) {
(self.0.as_def_id(), self.1)
}
}
impl<'tcx> IntoArgs for ty::InstanceDef<'tcx> {
- fn into_args(self) -> (DefId, DefId) {
- (self.def_id(), self.def_id())
+ type Other = ();
+ fn into_args(self) -> (DefId, ()) {
+ (self.def_id(), ())
+ }
+}
+
+impl IntoArgs for (CrateNum, SimplifiedType) {
+ type Other = SimplifiedType;
+ fn into_args(self) -> (DefId, SimplifiedType) {
+ (self.0.as_def_id(), self.1)
}
}
asyncness => { table }
fn_arg_names => { table }
generator_kind => { table }
+ trait_def => { table }
- trait_def => { cdata.get_trait_def(def_id.index, tcx.sess) }
adt_def => { cdata.get_adt_def(def_id.index, tcx) }
adt_destructor => {
let _ = cdata;
tcx.calculate_dtor(def_id, |_,_| Ok(()))
}
- associated_item_def_ids => { cdata.get_associated_item_def_ids(tcx, def_id.index) }
+ associated_item_def_ids => {
+ tcx.arena.alloc_from_iter(cdata.get_associated_item_def_ids(def_id.index, tcx.sess))
+ }
associated_item => { cdata.get_associated_item(def_id.index) }
inherent_impls => { cdata.get_inherent_implementations_for_type(tcx, def_id.index) }
- is_const_fn_raw => { cdata.is_const_fn_raw(def_id.index) }
is_foreign_item => { cdata.is_foreign_item(def_id.index) }
- static_mutability => { cdata.static_mutability(def_id.index) }
item_attrs => { tcx.arena.alloc_from_iter(cdata.get_item_attrs(def_id.index, tcx.sess)) }
trait_of_item => { cdata.get_trait_of_item(def_id.index) }
is_mir_available => { cdata.is_item_mir_available(def_id.index) }
traits_in_crate => { tcx.arena.alloc_from_iter(cdata.get_traits()) }
implementations_of_trait => { cdata.get_implementations_of_trait(tcx, other) }
+ crate_incoherent_impls => { cdata.get_incoherent_impls(tcx, other) }
dep_kind => {
let r = *cdata.dep_kind.lock();
tcx.arena.alloc_slice(&result)
}
defined_lib_features => { cdata.get_lib_features(tcx) }
- defined_lang_items => { tcx.arena.alloc_from_iter(cdata.get_lang_items()) }
+ defined_lang_items => { cdata.get_lang_items(tcx) }
diagnostic_items => { cdata.get_diagnostic_items() }
missing_lang_items => { cdata.get_missing_lang_items(tcx) }
.alloc_slice(&CStore::from_tcx(tcx).crate_dependencies_in_postorder(LOCAL_CRATE))
},
crates: |tcx, ()| tcx.arena.alloc_from_iter(CStore::from_tcx(tcx).crates_untracked()),
-
..*providers
};
}
self.get_crate_data(cnum).get_inherent_impls()
}
- /// Decodes all lang items in the crate (for rustdoc).
- pub fn lang_items_untracked(&self, cnum: CrateNum) -> impl Iterator<Item = DefId> + '_ {
- self.get_crate_data(cnum).get_lang_items().map(|(def_id, _)| def_id)
+ /// Decodes all incoherent inherent impls in the crate (for rustdoc).
+ pub fn incoherent_impls_in_crate_untracked(
+ &self,
+ cnum: CrateNum,
+ ) -> impl Iterator<Item = DefId> + '_ {
+ self.get_crate_data(cnum).get_all_incoherent_impls()
}
}