mirror of https://github.com/rust-lang/rust.git
Switch crate_extern_paths to a query, and tweak wording.
This commit is contained in:
parent
c225e5c5cb
commit
1b3ef66026
|
@ -27,7 +27,6 @@ use rustc_span::symbol::{Ident, Symbol};
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
macro_rules! provide {
|
macro_rules! provide {
|
||||||
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident,
|
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident,
|
||||||
|
@ -240,6 +239,8 @@ provide! { <'tcx> tcx, def_id, other, cdata,
|
||||||
|
|
||||||
syms
|
syms
|
||||||
}
|
}
|
||||||
|
|
||||||
|
crate_extern_paths => { cdata.source().paths().cloned().collect() }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn provide(providers: &mut Providers<'_>) {
|
pub fn provide(providers: &mut Providers<'_>) {
|
||||||
|
@ -514,8 +515,4 @@ impl CrateStore for CStore {
|
||||||
fn allocator_kind(&self) -> Option<AllocatorKind> {
|
fn allocator_kind(&self) -> Option<AllocatorKind> {
|
||||||
self.allocator_kind()
|
self.allocator_kind()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn crate_extern_paths(&self, cnum: CrateNum) -> Vec<PathBuf> {
|
|
||||||
self.get_crate_data(cnum).source().paths().cloned().collect()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,7 +203,6 @@ pub trait CrateStore {
|
||||||
fn encode_metadata(&self, tcx: TyCtxt<'_>) -> EncodedMetadata;
|
fn encode_metadata(&self, tcx: TyCtxt<'_>) -> EncodedMetadata;
|
||||||
fn metadata_encoding_version(&self) -> &[u8];
|
fn metadata_encoding_version(&self) -> &[u8];
|
||||||
fn allocator_kind(&self) -> Option<AllocatorKind>;
|
fn allocator_kind(&self) -> Option<AllocatorKind>;
|
||||||
fn crate_extern_paths(&self, cnum: CrateNum) -> Vec<PathBuf>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type CrateStoreDyn = dyn CrateStore + sync::Sync;
|
pub type CrateStoreDyn = dyn CrateStore + sync::Sync;
|
||||||
|
|
|
@ -1042,6 +1042,10 @@ rustc_queries! {
|
||||||
eval_always
|
eval_always
|
||||||
desc { "looking up the extra filename for a crate" }
|
desc { "looking up the extra filename for a crate" }
|
||||||
}
|
}
|
||||||
|
query crate_extern_paths(_: CrateNum) -> Vec<PathBuf> {
|
||||||
|
eval_always
|
||||||
|
desc { "looking up the paths for extern crates" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TypeChecking {
|
TypeChecking {
|
||||||
|
|
|
@ -62,7 +62,6 @@ use std::hash::{Hash, Hasher};
|
||||||
use std::iter;
|
use std::iter;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ops::{Bound, Deref};
|
use std::ops::{Bound, Deref};
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
type InternedSet<'tcx, T> = ShardedHashMap<Interned<'tcx, T>, ()>;
|
type InternedSet<'tcx, T> = ShardedHashMap<Interned<'tcx, T>, ()>;
|
||||||
|
@ -1253,14 +1252,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||||
if cnum == LOCAL_CRATE { false } else { self.cstore.crate_is_private_dep_untracked(cnum) }
|
if cnum == LOCAL_CRATE { false } else { self.cstore.crate_is_private_dep_untracked(cnum) }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn crate_extern_paths(&self, cnum: CrateNum) -> Vec<PathBuf> {
|
|
||||||
if cnum == LOCAL_CRATE {
|
|
||||||
self.sess.local_crate_source_file.iter().cloned().collect()
|
|
||||||
} else {
|
|
||||||
self.cstore.crate_extern_paths(cnum)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn def_path_hash(self, def_id: DefId) -> rustc_hir::definitions::DefPathHash {
|
pub fn def_path_hash(self, def_id: DefId) -> rustc_hir::definitions::DefPathHash {
|
||||||
if let Some(def_id) = def_id.as_local() {
|
if let Some(def_id) = def_id.as_local() {
|
||||||
|
|
|
@ -57,6 +57,7 @@ use rustc_span::{Span, DUMMY_SP};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
|
|
@ -147,8 +147,9 @@ impl LanguageItemCollector<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let mut note_def = |which, def_id: DefId| {
|
let mut note_def = |which, def_id: DefId| {
|
||||||
let location = if def_id.is_local() {
|
let crate_name = self.tcx.crate_name(def_id.krate);
|
||||||
"the local crate".to_string()
|
let note = if def_id.is_local() {
|
||||||
|
format!("{} definition in the local crate (`{}`)", which, crate_name)
|
||||||
} else {
|
} else {
|
||||||
let paths: Vec<_> = self
|
let paths: Vec<_> = self
|
||||||
.tcx
|
.tcx
|
||||||
|
@ -156,14 +157,14 @@ impl LanguageItemCollector<'tcx> {
|
||||||
.iter()
|
.iter()
|
||||||
.map(|p| p.display().to_string())
|
.map(|p| p.display().to_string())
|
||||||
.collect();
|
.collect();
|
||||||
paths.join(", ")
|
format!(
|
||||||
|
"{} definition in `{}` loaded from {}",
|
||||||
|
which,
|
||||||
|
crate_name,
|
||||||
|
paths.join(", ")
|
||||||
|
)
|
||||||
};
|
};
|
||||||
err.note(&format!(
|
err.note(¬e);
|
||||||
"{} definition in `{}` loaded from {}",
|
|
||||||
which,
|
|
||||||
self.tcx.crate_name(def_id.krate),
|
|
||||||
location
|
|
||||||
));
|
|
||||||
};
|
};
|
||||||
note_def("first", original_def_id);
|
note_def("first", original_def_id);
|
||||||
note_def("second", item_def_id);
|
note_def("second", item_def_id);
|
||||||
|
|
|
@ -9,7 +9,7 @@ LL | | }
|
||||||
|
|
|
|
||||||
= note: the lang item is first defined in crate `std` (which `duplicate_entry_error` depends on)
|
= note: the lang item is first defined in crate `std` (which `duplicate_entry_error` depends on)
|
||||||
= note: first definition in `std` loaded from SYSROOT/libstd-*.rlib
|
= note: first definition in `std` loaded from SYSROOT/libstd-*.rlib
|
||||||
= note: second definition in `duplicate_entry_error` loaded from the local crate
|
= note: second definition in the local crate (`duplicate_entry_error`)
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ LL | struct Foo;
|
||||||
|
|
|
|
||||||
= note: the lang item is first defined in crate `alloc` (which `std` depends on)
|
= note: the lang item is first defined in crate `alloc` (which `std` depends on)
|
||||||
= note: first definition in `alloc` loaded from SYSROOT/liballoc-*.rlib
|
= note: first definition in `alloc` loaded from SYSROOT/liballoc-*.rlib
|
||||||
= note: second definition in `E0152` loaded from the local crate
|
= note: second definition in the local crate (`E0152`)
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ LL | | }
|
||||||
|
|
|
|
||||||
= note: the lang item is first defined in crate `std` (which `panic_handler_std` depends on)
|
= note: the lang item is first defined in crate `std` (which `panic_handler_std` depends on)
|
||||||
= note: first definition in `std` loaded from SYSROOT/libstd-*.rlib
|
= note: first definition in `std` loaded from SYSROOT/libstd-*.rlib
|
||||||
= note: second definition in `panic_handler_std` loaded from the local crate
|
= note: second definition in the local crate (`panic_handler_std`)
|
||||||
|
|
||||||
error: argument should be `&PanicInfo`
|
error: argument should be `&PanicInfo`
|
||||||
--> $DIR/panic-handler-std.rs:8:16
|
--> $DIR/panic-handler-std.rs:8:16
|
||||||
|
|
Loading…
Reference in New Issue