mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 04:44:57 +00:00
Switch token trees to use Symbols
This commit is contained in:
parent
0c95aaa08e
commit
93024ad411
51 changed files with 593 additions and 399 deletions
|
@ -3380,23 +3380,27 @@ impl BuiltinAttr {
|
|||
if let builtin @ Some(_) = Self::builtin(name) {
|
||||
return builtin;
|
||||
}
|
||||
let idx =
|
||||
db.crate_def_map(krate.id).registered_attrs().iter().position(|it| it == name)? as u32;
|
||||
let idx = db
|
||||
.crate_def_map(krate.id)
|
||||
.registered_attrs()
|
||||
.iter()
|
||||
.position(|it| it.as_str() == name)? as u32;
|
||||
Some(BuiltinAttr { krate: Some(krate.id), idx })
|
||||
}
|
||||
|
||||
fn builtin(name: &str) -> Option<Self> {
|
||||
hir_expand::inert_attr_macro::find_builtin_attr_idx(name)
|
||||
hir_expand::inert_attr_macro::find_builtin_attr_idx(&Symbol::intern(name))
|
||||
.map(|idx| BuiltinAttr { krate: None, idx: idx as u32 })
|
||||
}
|
||||
|
||||
pub fn name(&self, db: &dyn HirDatabase) -> SmolStr {
|
||||
// FIXME: Return a `Name` here
|
||||
pub fn name(&self, db: &dyn HirDatabase) -> Name {
|
||||
match self.krate {
|
||||
Some(krate) => db.crate_def_map(krate).registered_attrs()[self.idx as usize].clone(),
|
||||
None => {
|
||||
SmolStr::new(hir_expand::inert_attr_macro::INERT_ATTRIBUTES[self.idx as usize].name)
|
||||
}
|
||||
Some(krate) => Name::new_symbol_root(
|
||||
db.crate_def_map(krate).registered_attrs()[self.idx as usize].clone(),
|
||||
),
|
||||
None => Name::new_symbol_root(Symbol::intern(
|
||||
hir_expand::inert_attr_macro::INERT_ATTRIBUTES[self.idx as usize].name,
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3420,13 +3424,15 @@ impl ToolModule {
|
|||
pub(crate) fn by_name(db: &dyn HirDatabase, krate: Crate, name: &str) -> Option<Self> {
|
||||
let krate = krate.id;
|
||||
let idx =
|
||||
db.crate_def_map(krate).registered_tools().iter().position(|it| it == name)? as u32;
|
||||
db.crate_def_map(krate).registered_tools().iter().position(|it| it.as_str() == name)?
|
||||
as u32;
|
||||
Some(ToolModule { krate, idx })
|
||||
}
|
||||
|
||||
pub fn name(&self, db: &dyn HirDatabase) -> SmolStr {
|
||||
// FIXME: Return a `Name` here
|
||||
db.crate_def_map(self.krate).registered_tools()[self.idx as usize].clone()
|
||||
pub fn name(&self, db: &dyn HirDatabase) -> Name {
|
||||
Name::new_symbol_root(
|
||||
db.crate_def_map(self.krate).registered_tools()[self.idx as usize].clone(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue