Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/render.rs')
-rw-r--r--crates/ide-completion/src/render.rs62
1 files changed, 62 insertions, 0 deletions
diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs
index c44e0597df..bb92aad184 100644
--- a/crates/ide-completion/src/render.rs
+++ b/crates/ide-completion/src/render.rs
@@ -875,6 +875,7 @@ mod tests {
exact_name_match,
type_match,
is_local,
+ is_missing,
trait_,
is_name_already_imported: _,
requires_import,
@@ -890,6 +891,7 @@ mod tests {
(type_match == Some(CompletionRelevanceTypeMatch::CouldUnify), "type_could_unify"),
(exact_name_match, "name"),
(is_local, "local"),
+ (is_missing, "missing"),
(postfix_match == Some(CompletionRelevancePostfixMatch::Exact), "snippet"),
(trait_.is_some_and(|it| it.is_op_method), "op_method"),
(requires_import, "requires_import"),
@@ -1293,6 +1295,7 @@ fn main() { Foo::Fo$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1345,6 +1348,7 @@ fn main() { Foo::Fo$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1490,6 +1494,7 @@ fn main() { Foo::Fo$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1576,6 +1581,7 @@ fn main() { let _: m::Spam = S$0 }
Exact,
),
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1614,6 +1620,7 @@ fn main() { let _: m::Spam = S$0 }
Exact,
),
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1665,6 +1672,7 @@ fn main() { som$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1724,6 +1732,7 @@ fn main() { som$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1767,6 +1776,7 @@ fn main() { A$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1810,6 +1820,7 @@ fn main() { A$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1855,6 +1866,7 @@ fn main() { A::$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1891,6 +1903,7 @@ fn main() { A::$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1941,6 +1954,7 @@ fn main() { A$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -1984,6 +1998,7 @@ fn main() { A$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2024,6 +2039,7 @@ impl A$0
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2064,6 +2080,7 @@ fn main() { A$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2108,6 +2125,7 @@ fn main() { a$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2152,6 +2170,7 @@ fn main() { A { the$0 } }
CouldUnify,
),
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2207,6 +2226,7 @@ impl S {
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2300,6 +2320,7 @@ use self::E::*;
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2372,6 +2393,7 @@ fn foo(s: S) { s.$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2592,6 +2614,7 @@ fn f() -> i32 {
Exact,
),
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2698,6 +2721,7 @@ fn main() {
exact_name_match: false,
type_match: None,
is_local: true,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2746,6 +2770,7 @@ fn main() {
exact_name_match: false,
type_match: None,
is_local: true,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -2857,6 +2882,7 @@ fn main() {
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -3032,6 +3058,37 @@ mod b {
}
#[test]
+ fn score_patterns() {
+ check_relevance(
+ r#"
+struct Foo(Bar);
+struct Bar { field: i32 }
+fn go(Foo($0): Foo) {}
+"#,
+ expect![[r#"
+ bn Bar {…} Bar { field$1 }$0 [type]
+ st Bar []
+ st Foo []
+ bn Foo(…) Foo($1)$0 []
+ "#]],
+ );
+
+ check_relevance(
+ r#"
+struct Foo(Bar);
+enum Bar { Variant { field: i32 } }
+fn go(foo: Foo) { match foo { Foo($0) } }
+"#,
+ expect![[r#"
+ bn Bar::Variant {…} Bar::Variant { field$1 }$0 [type]
+ en Bar []
+ st Foo []
+ bn Foo(…) Foo($1)$0 []
+ "#]],
+ );
+ }
+
+ #[test]
fn test_avoid_redundant_suggestion() {
check_relevance(
r#"
@@ -3738,6 +3795,7 @@ fn foo(f: Foo) { let _: &u32 = f.b$0 }
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -3833,6 +3891,7 @@ fn foo() {
Exact,
),
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -3887,6 +3946,7 @@ fn main() {
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: None,
is_name_already_imported: false,
requires_import: false,
@@ -4379,6 +4439,7 @@ fn main() {
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: Some(
CompletionRelevanceTraitInfo {
notable_trait: true,
@@ -4415,6 +4476,7 @@ fn main() {
exact_name_match: false,
type_match: None,
is_local: false,
+ is_missing: false,
trait_: Some(
CompletionRelevanceTraitInfo {
notable_trait: true,