use hir::{db::HirDatabase, HasAttrs, HirDisplay, StructKind};
use ide_db::SymbolKind;
use itertools::Itertools;
+use syntax::SmolStr;
use crate::{
item::{CompletionItem, ImportEdit},
false,
),
};
+ let qualified_name = qualified_name.to_string();
+ let short_qualified_name: SmolStr = short_qualified_name.to_string().into();
- // FIXME: ModPath::to_smol_str()?
- let mut item =
- CompletionItem::new(SymbolKind::Variant, ctx.source_range(), qualified_name.to_string());
+ let mut item = CompletionItem::new(SymbolKind::Variant, ctx.source_range(), qualified_name);
item.set_documentation(variant.docs(db))
.set_deprecated(ctx.is_deprecated(variant))
.detail(detail(db, variant, variant_kind));
item.add_import(import_to_add);
}
- // FIXME: ModPath::to_smol_str()?
- let short_qualified_name = short_qualified_name.to_string();
if variant_kind == hir::StructKind::Tuple {
cov_mark::hit!(inserts_parens_for_tuple_enums);
let params = Params::Anonymous(variant.fields(db).len());
let name = local_name.unwrap_or_else(|| func.name(db));
let params = params(completion, func, &func_type);
- // FIXME: SmolStr?
let call = match &func_type {
- FuncType::Method(Some(receiver)) => format!("{}.{}", receiver, &name),
- _ => name.to_string(),
+ FuncType::Method(Some(receiver)) => format!("{}.{}", receiver, &name).into(),
+ _ => name.to_smol_str(),
};
let mut item = CompletionItem::new(
if func.self_param(db).is_some() {
ctx.source_range(),
call.clone(),
);
- item.set_documentation(ctx.docs(func))
- .set_deprecated(ctx.is_deprecated(func) || ctx.is_deprecated_assoc_item(func))
- .detail(detail(db, func))
- .add_call_parens(completion, call.clone(), params);
-
- if import_to_add.is_none() {
- if let Some(actm) = func.as_assoc_item(db) {
- if let Some(trt) = actm.containing_trait_or_trait_impl(db) {
- item.trait_name(trt.name(db).to_smol_str());
- }
- }
- }
-
- if let Some(import_to_add) = import_to_add {
- item.add_import(import_to_add);
- }
- item.lookup_by(name.to_smol_str());
let ret_type = func.ret_type(db);
item.set_relevance(CompletionRelevance {
}
}
+ item.set_documentation(ctx.docs(func))
+ .set_deprecated(ctx.is_deprecated(func) || ctx.is_deprecated_assoc_item(func))
+ .detail(detail(db, func))
+ .add_call_parens(completion, call, params);
+
+ if import_to_add.is_none() {
+ if let Some(actm) = func.as_assoc_item(db) {
+ if let Some(trt) = actm.containing_trait_or_trait_impl(db) {
+ item.trait_name(trt.name(db).to_smol_str());
+ }
+ }
+ }
+
+ if let Some(import_to_add) = import_to_add {
+ item.add_import(import_to_add);
+ }
+ item.lookup_by(name.to_smol_str());
+
item.build()
}
use hir::{AsAssocItem, HirDisplay};
use ide_db::SymbolKind;
+use syntax::SmolStr;
use crate::{item::CompletionItem, render::RenderContext};
) -> Option<CompletionItem> {
let db = ctx.db();
- // FIXME: smolstr?
let name = if with_eq {
- format!("{} = ", type_alias.name(db))
+ SmolStr::from_iter([&*type_alias.name(db).to_smol_str(), " = "])
} else {
- type_alias.name(db).to_string()
+ type_alias.name(db).to_smol_str()
};
let detail = type_alias.display(db).to_string();