Unnamed repository; edit this file 'description' to name the repository.
-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 8628de413b..88fb395920 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 5df21fb36c..be1d321281 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 eb95bdcda9..56a2cd6e9d 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 0e2d408827..c9a31eea84 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 a76f97f3da..d6c1a787ff 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 10f1c90138..d03e94d058 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();