about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2021-12-21 15:04:19 +0100
committerLukas Wirth <lukastw97@gmail.com>2021-12-21 15:04:19 +0100
commit2b60d80eaf1f5bf6f0d5860565f46b4dd4ae448e (patch)
tree153923c3c2e09e9c2a504fd837f0e593052126fb
parente99ed3e407ad6c043e53ebadf2b62fbc2f8e678c (diff)
downloadrust-2b60d80eaf1f5bf6f0d5860565f46b4dd4ae448e.tar.gz
rust-2b60d80eaf1f5bf6f0d5860565f46b4dd4ae448e.zip
Simplify const rendering, remove constructor structs
-rw-r--r--crates/ide_completion/src/render/const_.rs57
1 files changed, 18 insertions, 39 deletions
diff --git a/crates/ide_completion/src/render/const_.rs b/crates/ide_completion/src/render/const_.rs
index c40490ac0b8..65c9d1d63ed 100644
--- a/crates/ide_completion/src/render/const_.rs
+++ b/crates/ide_completion/src/render/const_.rs
@@ -2,53 +2,32 @@
 
 use hir::{AsAssocItem, HasSource};
 use ide_db::SymbolKind;
-use syntax::{ast::Const, display::const_label};
+use syntax::display::const_label;
 
 use crate::{item::CompletionItem, render::RenderContext};
 
 pub(crate) fn render_const(ctx: RenderContext<'_>, const_: hir::Const) -> Option<CompletionItem> {
     let _p = profile::span("render_const");
-    ConstRender::new(ctx, const_)?.render()
+    render(ctx, const_)
 }
 
-#[derive(Debug)]
-struct ConstRender<'a> {
-    ctx: RenderContext<'a>,
-    const_: hir::Const,
-    ast_node: Const,
-}
-
-impl<'a> ConstRender<'a> {
-    fn new(ctx: RenderContext<'a>, const_: hir::Const) -> Option<ConstRender<'a>> {
-        let ast_node = const_.source(ctx.db())?.value;
-        Some(ConstRender { ctx, const_, ast_node })
-    }
-
-    fn render(self) -> Option<CompletionItem> {
-        let name = self.const_.name(self.ctx.db())?.to_smol_str();
-        let detail = self.detail();
-
-        let mut item =
-            CompletionItem::new(SymbolKind::Const, self.ctx.source_range(), name.clone());
-        item.set_documentation(self.ctx.docs(self.const_))
-            .set_deprecated(
-                self.ctx.is_deprecated(self.const_)
-                    || self.ctx.is_deprecated_assoc_item(self.const_),
-            )
-            .detail(detail);
-
-        let db = self.ctx.db();
-        if let Some(actm) = self.const_.as_assoc_item(db) {
-            if let Some(trt) = actm.containing_trait_or_trait_impl(db) {
-                item.trait_name(trt.name(db).to_smol_str());
-                item.insert_text(name);
-            }
+fn render(ctx: RenderContext<'_>, const_: hir::Const) -> Option<CompletionItem> {
+    let db = ctx.db();
+    let name = const_.name(db)?.to_smol_str();
+    // FIXME: This is parsing files!
+    let detail = const_label(&const_.source(db)?.value);
+
+    let mut item = CompletionItem::new(SymbolKind::Const, ctx.source_range(), name.clone());
+    item.set_documentation(ctx.docs(const_))
+        .set_deprecated(ctx.is_deprecated(const_) || ctx.is_deprecated_assoc_item(const_))
+        .detail(detail);
+
+    if let Some(actm) = const_.as_assoc_item(db) {
+        if let Some(trt) = actm.containing_trait_or_trait_impl(db) {
+            item.trait_name(trt.name(db).to_smol_str());
+            item.insert_text(name);
         }
-
-        Some(item.build())
     }
 
-    fn detail(&self) -> String {
-        const_label(&self.ast_node)
-    }
+    Some(item.build())
 }