about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/ide_completion/src/completions/qualified_path.rs10
-rw-r--r--crates/ide_completion/src/render/type_alias.rs20
-rw-r--r--crates/ide_completion/src/tests/expression.rs2
-rw-r--r--crates/ide_completion/src/tests/pattern.rs2
-rw-r--r--crates/ide_completion/src/tests/type_pos.rs4
-rw-r--r--crates/syntax/src/display.rs15
6 files changed, 17 insertions, 36 deletions
diff --git a/crates/ide_completion/src/completions/qualified_path.rs b/crates/ide_completion/src/completions/qualified_path.rs
index 8628de413b5..88fb3959203 100644
--- a/crates/ide_completion/src/completions/qualified_path.rs
+++ b/crates/ide_completion/src/completions/qualified_path.rs
@@ -288,7 +288,7 @@ fn foo() { let _ = lib::S::$0 }
             expect![[r#"
                 fn public_method() fn()
                 ct PUBLIC_CONST    pub const PUBLIC_CONST: u32
-                ta PublicType      pub type PublicType;
+                ta PublicType      pub type PublicType = u32
             "#]],
         );
     }
@@ -377,8 +377,8 @@ trait Sub: Super {
 fn foo<T: Sub>() { T::$0 }
 "#,
             expect![[r#"
-                ta SubTy (as Sub)        type SubTy;
-                ta Ty (as Super)         type Ty;
+                ta SubTy (as Sub)        type SubTy
+                ta Ty (as Super)         type Ty
                 ct C2 (as Sub)           const C2: ()
                 fn subfunc() (as Sub)    fn()
                 me submethod(…) (as Sub) fn(&self)
@@ -417,8 +417,8 @@ impl<T> Sub for Wrap<T> {
 }
 "#,
             expect![[r#"
-                ta SubTy (as Sub)        type SubTy;
-                ta Ty (as Super)         type Ty;
+                ta SubTy (as Sub)        type SubTy
+                ta Ty (as Super)         type Ty
                 ct CONST (as Super)      const CONST: u8
                 fn func() (as Super)     fn()
                 me method(…) (as Super)  fn(&self)
diff --git a/crates/ide_completion/src/render/type_alias.rs b/crates/ide_completion/src/render/type_alias.rs
index 5df21fb36cd..be1d3212810 100644
--- a/crates/ide_completion/src/render/type_alias.rs
+++ b/crates/ide_completion/src/render/type_alias.rs
@@ -1,8 +1,7 @@
 //! Renderer for type aliases.
 
-use hir::{AsAssocItem, HasSource};
+use hir::{AsAssocItem, HirDisplay};
 use ide_db::SymbolKind;
-use syntax::{ast::HasName, display::type_label};
 
 use crate::{item::CompletionItem, render::RenderContext};
 
@@ -29,16 +28,13 @@ fn render(
 ) -> Option<CompletionItem> {
     let db = ctx.db();
 
-    // FIXME: This parses the file!
-    let ast_node = type_alias.source(db)?.value;
-    let name = ast_node.name().map(|name| {
-        if with_eq {
-            format!("{} = ", name.text())
-        } else {
-            name.text().to_string()
-        }
-    })?;
-    let detail = type_label(&ast_node);
+    // FIXME: smolstr?
+    let name = if with_eq {
+        format!("{} = ", type_alias.name(db))
+    } else {
+        type_alias.name(db).to_string()
+    };
+    let detail = type_alias.display(db).to_string();
 
     let mut item = CompletionItem::new(SymbolKind::TypeAlias, ctx.source_range(), name.clone());
     item.set_documentation(ctx.docs(type_alias))
diff --git a/crates/ide_completion/src/tests/expression.rs b/crates/ide_completion/src/tests/expression.rs
index eb95bdcda95..56a2cd6e9dc 100644
--- a/crates/ide_completion/src/tests/expression.rs
+++ b/crates/ide_completion/src/tests/expression.rs
@@ -548,7 +548,7 @@ fn func() {
             ev UnitV       ()
             ct ASSOC_CONST const ASSOC_CONST: ()
             fn assoc_fn()  fn()
-            ta AssocType   type AssocType;
+            ta AssocType   type AssocType = ()
         "#]],
     );
 }
diff --git a/crates/ide_completion/src/tests/pattern.rs b/crates/ide_completion/src/tests/pattern.rs
index 0e2d4088274..c9a31eea849 100644
--- a/crates/ide_completion/src/tests/pattern.rs
+++ b/crates/ide_completion/src/tests/pattern.rs
@@ -296,7 +296,7 @@ fn func() {
             ev UnitV       ()
             ct ASSOC_CONST const ASSOC_CONST: ()
             fn assoc_fn()  fn()
-            ta AssocType   type AssocType;
+            ta AssocType   type AssocType = ()
         "#]],
     );
 }
diff --git a/crates/ide_completion/src/tests/type_pos.rs b/crates/ide_completion/src/tests/type_pos.rs
index a76f97f3da3..d6c1a787ff9 100644
--- a/crates/ide_completion/src/tests/type_pos.rs
+++ b/crates/ide_completion/src/tests/type_pos.rs
@@ -148,7 +148,7 @@ fn foo<'lt, T: Trait2<$0>, const CONST_PARAM: usize>(_: T) {}
             kw self
             kw super
             kw crate
-            ta Foo =  (as Trait2) type Foo;
+            ta Foo =  (as Trait2) type Foo
             tp T
             cp CONST_PARAM
             tt Trait
@@ -199,7 +199,7 @@ impl Enum {
 fn func(_: Enum::$0) {}
 "#,
         expect![[r#"
-            ta AssocType type AssocType;
+            ta AssocType type AssocType = ()
         "#]],
     );
 }
diff --git a/crates/syntax/src/display.rs b/crates/syntax/src/display.rs
index 10f1c901387..d03e94d0583 100644
--- a/crates/syntax/src/display.rs
+++ b/crates/syntax/src/display.rs
@@ -50,21 +50,6 @@ pub fn function_declaration(node: &ast::Fn) -> String {
     buf
 }
 
-pub fn type_label(node: &ast::TypeAlias) -> String {
-    let mut s = String::new();
-    if let Some(vis) = node.visibility() {
-        format_to!(s, "{} ", vis);
-    }
-    format_to!(s, "type ");
-    if let Some(name) = node.name() {
-        format_to!(s, "{}", name);
-    } else {
-        format_to!(s, "?");
-    }
-    format_to!(s, ";");
-    s
-}
-
 pub fn macro_label(node: &ast::Macro) -> String {
     let name = node.name();
     let mut s = String::new();