Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/find_path.rs')
-rw-r--r--crates/hir-def/src/find_path.rs25
1 files changed, 14 insertions, 11 deletions
diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs
index 9a3c049541..a3a602c2c1 100644
--- a/crates/hir-def/src/find_path.rs
+++ b/crates/hir-def/src/find_path.rs
@@ -3,9 +3,10 @@
use std::{cell::Cell, cmp::Ordering, iter};
use hir_expand::{
- name::{known, AsName, Name},
+ name::{AsName, Name},
Lookup,
};
+use intern::{sym, Symbol};
use rustc_hash::FxHashSet;
use crate::{
@@ -414,13 +415,13 @@ fn select_best_path(
(Unstable, Stable) => return new_path,
_ => {}
}
- const STD_CRATES: [Name; 3] = [known::std, known::core, known::alloc];
+ let std_crates: [Symbol; 3] = [sym::std.clone(), sym::core.clone(), sym::alloc.clone()];
let choose = |new: (ModPath, _), old: (ModPath, _)| {
let (new_path, _) = &new;
let (old_path, _) = &old;
- let new_has_prelude = new_path.segments().iter().any(|seg| seg == &known::prelude);
- let old_has_prelude = old_path.segments().iter().any(|seg| seg == &known::prelude);
+ let new_has_prelude = new_path.segments().iter().any(|seg| *seg == sym::prelude.clone());
+ let old_has_prelude = old_path.segments().iter().any(|seg| *seg == sym::prelude.clone());
match (new_has_prelude, old_has_prelude, cfg.prefer_prelude) {
(true, false, true) | (false, true, false) => new,
(true, false, false) | (false, true, true) => old,
@@ -441,18 +442,20 @@ fn select_best_path(
};
match (old_path.0.segments().first(), new_path.0.segments().first()) {
- (Some(old), Some(new)) if STD_CRATES.contains(old) && STD_CRATES.contains(new) => {
+ (Some(old), Some(new))
+ if std_crates.contains(old.symbol()) && std_crates.contains(new.symbol()) =>
+ {
let rank = match cfg.prefer_no_std {
false => |name: &Name| match name {
- name if name == &known::core => 0,
- name if name == &known::alloc => 1,
- name if name == &known::std => 2,
+ name if *name == sym::core.clone() => 0,
+ name if *name == sym::alloc.clone() => 1,
+ name if *name == sym::std.clone() => 2,
_ => unreachable!(),
},
true => |name: &Name| match name {
- name if name == &known::core => 2,
- name if name == &known::alloc => 1,
- name if name == &known::std => 0,
+ name if *name == sym::core.clone() => 2,
+ name if *name == sym::alloc.clone() => 1,
+ name if *name == sym::std.clone() => 0,
_ => unreachable!(),
},
};