Skip to content

Commit 576b041

Browse files
committed
prepend crate:: when crate_in_path feature is enabled
1 parent b4aa1f2 commit 576b041

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

src/librustc_resolve/lib.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4236,6 +4236,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
42364236
lookup_name: Name,
42374237
namespace: Namespace,
42384238
start_module: &'a ModuleData<'a>,
4239+
graph_root: bool,
42394240
filter_fn: FilterFn)
42404241
-> Vec<ImportSuggestion>
42414242
where FilterFn: Fn(Def) -> bool
@@ -4262,17 +4263,14 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
42624263
if ident.name == lookup_name && ns == namespace {
42634264
if filter_fn(name_binding.def()) {
42644265
// create the path
4265-
let mut segms = if self.session.rust_2018() && !in_module_is_extern {
4266+
let mut segms = path_segments.clone();
4267+
if self.session.rust_2018() && !in_module_is_extern {
42664268
// crate-local absolute paths start with `crate::` in edition 2018
42674269
// FIXME: may also be stabilized for Rust 2015 (Issues #45477, #44660)
4268-
let mut full_segms = vec![
4269-
ast::PathSegment::from_ident(keywords::Crate.ident())
4270-
];
4271-
full_segms.extend(path_segments.clone());
4272-
full_segms
4273-
} else {
4274-
path_segments.clone()
4275-
};
4270+
if graph_root {
4271+
segms.insert(0, ast::PathSegment::from_ident(keywords::Crate.ident()));
4272+
}
4273+
}
42764274

42774275
segms.push(ast::PathSegment::from_ident(ident));
42784276
let path = Path {
@@ -4326,7 +4324,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
43264324
-> Vec<ImportSuggestion>
43274325
where FilterFn: Fn(Def) -> bool
43284326
{
4329-
self.lookup_import_candidates_from_module(lookup_name, namespace, self.graph_root, filter_fn)
4327+
self.lookup_import_candidates_from_module(lookup_name, namespace, self.graph_root, true, filter_fn)
43304328
}
43314329

43324330
fn find_module(&mut self,

0 commit comments

Comments
 (0)