Skip to content

Commit 6ba7d24

Browse files
committed
Replace SmolStr usage with Symbol in FileSymbol
1 parent 4bf516e commit 6ba7d24

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

crates/hir/src/symbols.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use hir_ty::{
1818
};
1919
use intern::Symbol;
2020
use rustc_hash::FxHashMap;
21-
use syntax::{AstNode, AstPtr, SmolStr, SyntaxNode, SyntaxNodePtr, ToSmolStr, ast::HasName};
21+
use syntax::{AstNode, AstPtr, SyntaxNode, SyntaxNodePtr, ToSmolStr, ast::HasName};
2222

2323
use crate::{HasCrate, Module, ModuleDef, Semantics};
2424

@@ -29,7 +29,7 @@ pub struct FileSymbol {
2929
pub name: Symbol,
3030
pub def: ModuleDef,
3131
pub loc: DeclarationLocation,
32-
pub container_name: Option<SmolStr>,
32+
pub container_name: Option<Symbol>,
3333
/// Whether this symbol is a doc alias for the original symbol.
3434
pub is_alias: bool,
3535
pub is_assoc: bool,
@@ -65,7 +65,7 @@ pub struct SymbolCollector<'a> {
6565
db: &'a dyn HirDatabase,
6666
symbols: FxIndexSet<FileSymbol>,
6767
work: Vec<SymbolCollectorWork>,
68-
current_container_name: Option<SmolStr>,
68+
current_container_name: Option<Symbol>,
6969
}
7070

7171
/// Given a [`ModuleId`] and a [`HirDatabase`], use the DefMap for the module's crate to collect
@@ -108,7 +108,7 @@ impl<'a> SymbolCollector<'a> {
108108
tracing::info!(?work, "SymbolCollector::do_work");
109109
self.db.unwind_if_revision_cancelled();
110110

111-
let parent_name = work.parent.map(|name| name.as_str().to_smolstr());
111+
let parent_name = work.parent.map(|name| Symbol::intern(name.as_str()));
112112
self.with_container_name(parent_name, |s| s.collect_from_module(work.module_id));
113113
}
114114

@@ -125,7 +125,7 @@ impl<'a> SymbolCollector<'a> {
125125
}
126126
ModuleDefId::AdtId(AdtId::EnumId(id)) => {
127127
this.push_decl(id, name, false, None);
128-
let enum_name = this.db.enum_signature(id).name.as_str().to_smolstr();
128+
let enum_name = Symbol::intern(this.db.enum_signature(id).name.as_str());
129129
this.with_container_name(Some(enum_name), |this| {
130130
let variants = id.enum_variants(this.db);
131131
for (variant_id, variant_name, _) in &variants.variants {
@@ -328,7 +328,7 @@ impl<'a> SymbolCollector<'a> {
328328
)
329329
.to_smolstr(),
330330
);
331-
self.with_container_name(impl_name, |s| {
331+
self.with_container_name(impl_name.as_deref().map(Symbol::intern), |s| {
332332
for &(ref name, assoc_item_id) in &impl_id.impl_items(self.db).items {
333333
s.push_assoc_item(assoc_item_id, name, None)
334334
}
@@ -337,14 +337,14 @@ impl<'a> SymbolCollector<'a> {
337337

338338
fn collect_from_trait(&mut self, trait_id: TraitId, trait_do_not_complete: Complete) {
339339
let trait_data = self.db.trait_signature(trait_id);
340-
self.with_container_name(Some(trait_data.name.as_str().into()), |s| {
340+
self.with_container_name(Some(Symbol::intern(trait_data.name.as_str())), |s| {
341341
for &(ref name, assoc_item_id) in &trait_id.trait_items(self.db).items {
342342
s.push_assoc_item(assoc_item_id, name, Some(trait_do_not_complete));
343343
}
344344
});
345345
}
346346

347-
fn with_container_name(&mut self, container_name: Option<SmolStr>, f: impl FnOnce(&mut Self)) {
347+
fn with_container_name(&mut self, container_name: Option<Symbol>, f: impl FnOnce(&mut Self)) {
348348
if let Some(container_name) = container_name {
349349
let prev = self.current_container_name.replace(container_name);
350350
f(self);

crates/ide-db/src/ra_fixture.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
use std::hash::{BuildHasher, Hash};
44

5-
use hir::{CfgExpr, FilePositionWrapper, FileRangeWrapper, Semantics};
5+
use hir::{CfgExpr, FilePositionWrapper, FileRangeWrapper, Semantics, Symbol};
66
use smallvec::SmallVec;
77
use span::{TextRange, TextSize};
88
use syntax::{
@@ -524,6 +524,7 @@ impl_empty_upmap_from_ra_fixture!(
524524
f64,
525525
&str,
526526
String,
527+
Symbol,
527528
SmolStr,
528529
Documentation,
529530
SymbolKind,

crates/ide/src/navigation_target.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use arrayvec::ArrayVec;
66
use either::Either;
77
use hir::{
88
AssocItem, Crate, FieldSource, HasContainer, HasCrate, HasSource, HirDisplay, HirFileId,
9-
InFile, LocalSource, ModuleSource, Semantics, db::ExpandDatabase, symbols::FileSymbol,
9+
InFile, LocalSource, ModuleSource, Semantics, Symbol, db::ExpandDatabase, symbols::FileSymbol,
1010
};
1111
use ide_db::{
1212
FileId, FileRange, RootDatabase, SymbolKind,
@@ -51,8 +51,7 @@ pub struct NavigationTarget {
5151
// FIXME: Symbol
5252
pub name: SmolStr,
5353
pub kind: Option<SymbolKind>,
54-
// FIXME: Symbol
55-
pub container_name: Option<SmolStr>,
54+
pub container_name: Option<Symbol>,
5655
pub description: Option<String>,
5756
pub docs: Option<Documentation>,
5857
/// In addition to a `name` field, a `NavigationTarget` may also be aliased
@@ -349,13 +348,13 @@ impl TryToNav for hir::ModuleDef {
349348

350349
pub(crate) trait ToNavFromAst: Sized {
351350
const KIND: SymbolKind;
352-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
351+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
353352
_ = db;
354353
None
355354
}
356355
}
357356

358-
fn container_name(db: &RootDatabase, t: impl HasContainer, edition: Edition) -> Option<SmolStr> {
357+
fn container_name(db: &RootDatabase, t: impl HasContainer, edition: Edition) -> Option<Symbol> {
359358
match t.container(db) {
360359
hir::ItemContainer::Trait(it) => Some(it.name(db).display_no_db(edition).to_smolstr()),
361360
// FIXME: Handle owners of blocks correctly here
@@ -364,36 +363,38 @@ fn container_name(db: &RootDatabase, t: impl HasContainer, edition: Edition) ->
364363
}
365364
_ => None,
366365
}
366+
.as_deref()
367+
.map(Symbol::intern)
367368
}
368369

369370
impl ToNavFromAst for hir::Function {
370371
const KIND: SymbolKind = SymbolKind::Function;
371-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
372+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
372373
container_name(db, self, self.krate(db).edition(db))
373374
}
374375
}
375376

376377
impl ToNavFromAst for hir::Const {
377378
const KIND: SymbolKind = SymbolKind::Const;
378-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
379+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
379380
container_name(db, self, self.krate(db).edition(db))
380381
}
381382
}
382383
impl ToNavFromAst for hir::Static {
383384
const KIND: SymbolKind = SymbolKind::Static;
384-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
385+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
385386
container_name(db, self, self.krate(db).edition(db))
386387
}
387388
}
388389
impl ToNavFromAst for hir::Struct {
389390
const KIND: SymbolKind = SymbolKind::Struct;
390-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
391+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
391392
container_name(db, self, self.krate(db).edition(db))
392393
}
393394
}
394395
impl ToNavFromAst for hir::Enum {
395396
const KIND: SymbolKind = SymbolKind::Enum;
396-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
397+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
397398
container_name(db, self, self.krate(db).edition(db))
398399
}
399400
}
@@ -402,19 +403,19 @@ impl ToNavFromAst for hir::Variant {
402403
}
403404
impl ToNavFromAst for hir::Union {
404405
const KIND: SymbolKind = SymbolKind::Union;
405-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
406+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
406407
container_name(db, self, self.krate(db).edition(db))
407408
}
408409
}
409410
impl ToNavFromAst for hir::TypeAlias {
410411
const KIND: SymbolKind = SymbolKind::TypeAlias;
411-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
412+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
412413
container_name(db, self, self.krate(db).edition(db))
413414
}
414415
}
415416
impl ToNavFromAst for hir::Trait {
416417
const KIND: SymbolKind = SymbolKind::Trait;
417-
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
418+
fn container_name(self, db: &RootDatabase) -> Option<Symbol> {
418419
container_name(db, self, self.krate(db).edition(db))
419420
}
420421
}

0 commit comments

Comments
 (0)