Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/keyword.rs')
-rw-r--r--crates/ide-completion/src/completions/keyword.rs196
1 files changed, 196 insertions, 0 deletions
diff --git a/crates/ide-completion/src/completions/keyword.rs b/crates/ide-completion/src/completions/keyword.rs
index 64bb1fce6b..6162d98372 100644
--- a/crates/ide-completion/src/completions/keyword.rs
+++ b/crates/ide-completion/src/completions/keyword.rs
@@ -238,6 +238,88 @@ fn main() {
r#"
fn main() {
let x = if $1 {
+ $2
+} else {
+ $0
+};
+ let y = 92;
+}
+"#,
+ );
+
+ check_edit(
+ "else",
+ r#"
+fn main() {
+ let x = if true {
+ ()
+ } $0
+ let y = 92;
+}
+"#,
+ r#"
+fn main() {
+ let x = if true {
+ ()
+ } else {
+ $0
+};
+ let y = 92;
+}
+"#,
+ );
+
+ check_edit(
+ "else if",
+ r#"
+fn main() {
+ let x = if true {
+ ()
+ } $0 else {};
+}
+"#,
+ r#"
+fn main() {
+ let x = if true {
+ ()
+ } else if $1 {
+ $0
+} else {};
+}
+"#,
+ );
+
+ check_edit(
+ "else if",
+ r#"
+fn main() {
+ let x = if true {
+ ()
+ } $0 else if true {};
+}
+"#,
+ r#"
+fn main() {
+ let x = if true {
+ ()
+ } else if $1 {
+ $0
+} else if true {};
+}
+"#,
+ );
+
+ check_edit(
+ "else",
+ r#"
+fn main() {
+ let x = 2 $0
+ let y = 92;
+}
+"#,
+ r#"
+fn main() {
+ let x = 2 else {
$0
};
let y = 92;
@@ -336,6 +418,120 @@ fn main() {
}
#[test]
+ fn if_completion_in_parameter() {
+ check_edit(
+ "if",
+ r"
+fn main() {
+ foo($0)
+}
+",
+ r"
+fn main() {
+ foo(if $1 {
+ $2
+} else {
+ $0
+})
+}
+",
+ );
+
+ check_edit(
+ "if",
+ r"
+fn main() {
+ foo($0, 2)
+}
+",
+ r"
+fn main() {
+ foo(if $1 {
+ $2
+} else {
+ $0
+}, 2)
+}
+",
+ );
+
+ check_edit(
+ "if",
+ r"
+fn main() {
+ foo(2, $0)
+}
+",
+ r"
+fn main() {
+ foo(2, if $1 {
+ $2
+} else {
+ $0
+})
+}
+",
+ );
+
+ check_edit(
+ "if let",
+ r"
+fn main() {
+ foo(2, $0)
+}
+",
+ r"
+fn main() {
+ foo(2, if let $1 = $2 {
+ $3
+} else {
+ $0
+})
+}
+",
+ );
+ }
+
+ #[test]
+ fn if_completion_in_let_statement() {
+ check_edit(
+ "if",
+ r"
+fn main() {
+ let x = $0;
+}
+",
+ r"
+fn main() {
+ let x = if $1 {
+ $2
+} else {
+ $0
+};
+}
+",
+ );
+
+ check_edit(
+ "if let",
+ r"
+fn main() {
+ let x = $0;
+}
+",
+ r"
+fn main() {
+ let x = if let $1 = $2 {
+ $3
+} else {
+ $0
+};
+}
+",
+ );
+ }
+
+ #[test]
fn completes_let_in_block() {
check_edit(
"let",