Skip to content

Commit 130cb9e

Browse files
authored
Rollup merge of rust-lang#129203 - compiler-errors:extern_crate_data, r=jieyouxu
Use cnum for extern crate data key Noticed this when fixing rust-lang#129184. I still have yet to put up a fix for that (mostly because I'm too lazy to minimize a test, that will come soon though).
2 parents 4e08768 + b2dd943 commit 130cb9e

File tree

5 files changed

+8
-10
lines changed

5 files changed

+8
-10
lines changed

compiler/rustc_middle/src/query/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1520,7 +1520,7 @@ rustc_queries! {
15201520
separate_provide_extern
15211521
}
15221522

1523-
query extern_crate(def_id: DefId) -> Option<&'tcx ExternCrate> {
1523+
query extern_crate(def_id: CrateNum) -> Option<&'tcx ExternCrate> {
15241524
eval_always
15251525
desc { "getting crate's ExternCrateData" }
15261526
separate_provide_extern

compiler/rustc_middle/src/ty/print/pretty.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
451451
// 2. For an extern inferred from a path or an indirect crate,
452452
// where there is no explicit `extern crate`, we just prepend
453453
// the crate name.
454-
match self.tcx().extern_crate(def_id) {
454+
match self.tcx().extern_crate(cnum) {
455455
Some(&ExternCrate { src, dependency_of, span, .. }) => match (src, dependency_of) {
456456
(ExternCrateSource::Extern(def_id), LOCAL_CRATE) => {
457457
// NOTE(eddyb) the only reason `span` might be dummy,
@@ -3247,10 +3247,8 @@ fn for_each_def(tcx: TyCtxt<'_>, mut collect_fn: impl for<'b> FnMut(&'b Ident, N
32473247
let mut seen_defs: DefIdSet = Default::default();
32483248

32493249
for &cnum in tcx.crates(()).iter() {
3250-
let def_id = cnum.as_def_id();
3251-
32523250
// Ignore crates that are not direct dependencies.
3253-
match tcx.extern_crate(def_id) {
3251+
match tcx.extern_crate(cnum) {
32543252
None => continue,
32553253
Some(extern_crate) => {
32563254
if !extern_crate.is_direct() {
@@ -3259,7 +3257,7 @@ fn for_each_def(tcx: TyCtxt<'_>, mut collect_fn: impl for<'b> FnMut(&'b Ident, N
32593257
}
32603258
}
32613259

3262-
queue.push(def_id);
3260+
queue.push(cnum.as_def_id());
32633261
}
32643262

32653263
// Iterate external crate defs but be mindful about visibility

compiler/rustc_middle/src/ty/util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ impl<'tcx> TyCtxt<'tcx> {
859859
// If `extern_crate` is `None`, then the crate was injected (e.g., by the allocator).
860860
// Treat that kind of crate as "indirect", since it's an implementation detail of
861861
// the language.
862-
|| self.extern_crate(key.as_def_id()).is_some_and(|e| e.is_direct())
862+
|| self.extern_crate(key).is_some_and(|e| e.is_direct())
863863
}
864864

865865
/// Whether the item has a host effect param. This is different from `TyCtxt::is_const`,

compiler/rustc_passes/src/lang_items.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
130130
if first_defined_span.is_none() {
131131
orig_crate_name = self.tcx.crate_name(original_def_id.krate);
132132
if let Some(ExternCrate { dependency_of: inner_dependency_of, .. }) =
133-
self.tcx.extern_crate(original_def_id)
133+
self.tcx.extern_crate(original_def_id.krate)
134134
{
135135
orig_dependency_of = self.tcx.crate_name(*inner_dependency_of);
136136
}
@@ -139,7 +139,7 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
139139
let duplicate = if item_span.is_some() {
140140
Duplicate::Plain
141141
} else {
142-
match self.tcx.extern_crate(item_def_id) {
142+
match self.tcx.extern_crate(item_def_id.krate) {
143143
Some(ExternCrate { dependency_of: inner_dependency_of, .. }) => {
144144
dependency_of = self.tcx.crate_name(*inner_dependency_of);
145145
Duplicate::CrateDepends

compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1668,7 +1668,7 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> {
16681668
let name = self.tcx.crate_name(trait_def_id.krate);
16691669
let spans: Vec<_> = [trait_def_id, found_type]
16701670
.into_iter()
1671-
.filter_map(|def_id| self.tcx.extern_crate(def_id))
1671+
.filter_map(|def_id| self.tcx.extern_crate(def_id.krate))
16721672
.map(|data| {
16731673
let dependency = if data.dependency_of == LOCAL_CRATE {
16741674
"direct dependency of the current crate".to_string()

0 commit comments

Comments
 (0)