Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/tests.rs')
-rw-r--r--crates/ide_completion/src/tests.rs63
1 files changed, 47 insertions, 16 deletions
diff --git a/crates/ide_completion/src/tests.rs b/crates/ide_completion/src/tests.rs
index 4028fc2242..fee61e0bfc 100644
--- a/crates/ide_completion/src/tests.rs
+++ b/crates/ide_completion/src/tests.rs
@@ -20,6 +20,7 @@ mod record;
mod type_pos;
mod use_tree;
mod visibility;
+mod flyimport;
use std::mem;
@@ -77,10 +78,18 @@ pub(crate) const TEST_CONFIG: CompletionConfig = CompletionConfig {
};
pub(crate) fn completion_list(ra_fixture: &str) -> String {
- completion_list_with_config(TEST_CONFIG, ra_fixture)
+ completion_list_with_config(TEST_CONFIG, ra_fixture, true)
}
-fn completion_list_with_config(config: CompletionConfig, ra_fixture: &str) -> String {
+pub(crate) fn completion_list_no_kw(ra_fixture: &str) -> String {
+ completion_list_with_config(TEST_CONFIG, ra_fixture, false)
+}
+
+fn completion_list_with_config(
+ config: CompletionConfig,
+ ra_fixture: &str,
+ include_keywords: bool,
+) -> String {
// filter out all but one builtintype completion for smaller test outputs
let items = get_all_items(config, ra_fixture);
let mut bt_seen = false;
@@ -89,6 +98,8 @@ fn completion_list_with_config(config: CompletionConfig, ra_fixture: &str) -> St
.filter(|it| {
it.completion_kind != CompletionKind::BuiltinType || !mem::replace(&mut bt_seen, true)
})
+ .filter(|it| include_keywords || it.completion_kind != CompletionKind::Keyword)
+ .filter(|it| include_keywords || it.completion_kind != CompletionKind::Snippet)
.collect();
render_completion_list(items)
}
@@ -120,20 +131,6 @@ pub(crate) fn do_completion_with_config(
.collect()
}
-pub(crate) fn filtered_completion_list(code: &str, kind: CompletionKind) -> String {
- filtered_completion_list_with_config(TEST_CONFIG, code, kind)
-}
-
-pub(crate) fn filtered_completion_list_with_config(
- config: CompletionConfig,
- code: &str,
- kind: CompletionKind,
-) -> String {
- let kind_completions: Vec<CompletionItem> =
- get_all_items(config, code).into_iter().filter(|c| c.completion_kind == kind).collect();
- render_completion_list(kind_completions)
-}
-
fn render_completion_list(completions: Vec<CompletionItem>) -> String {
fn monospace_width(s: &str) -> usize {
s.chars().count()
@@ -254,3 +251,37 @@ fn foo() {
"#,
);
}
+
+#[test]
+fn no_completions_in_comments() {
+ cov_mark::check!(no_keyword_completion_in_comments);
+ assert_eq!(
+ completion_list(
+ r#"
+fn test() {
+let x = 2; // A comment$0
+}
+"#,
+ ),
+ String::new(),
+ );
+ assert_eq!(
+ completion_list(
+ r#"
+/*
+Some multi-line comment$0
+*/
+"#,
+ ),
+ String::new(),
+ );
+ assert_eq!(
+ completion_list(
+ r#"
+/// Some doc comment
+/// let test$0 = 1
+"#,
+ ),
+ String::new(),
+ );
+}