aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/tools/rust/rust-analyzer/no-option-zip.patch
blob: 5b1089ba9b877d16ee1e1fe619519b3b7c7b26d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
diff --git a/crates/assists/src/handlers/merge_imports.rs b/crates/assists/src/handlers/merge_imports.rs
index fe33cee53..2184a4154 100644
--- a/crates/assists/src/handlers/merge_imports.rs
+++ b/crates/assists/src/handlers/merge_imports.rs
@@ -32,7 +32,7 @@ pub(crate) fn merge_imports(acc: &mut Assists, ctx: &AssistContext) -> Option<()
     if let Some(use_item) = tree.syntax().parent().and_then(ast::Use::cast) {
         let (merged, to_delete) =
             next_prev().filter_map(|dir| neighbor(&use_item, dir)).find_map(|use_item2| {
-                try_merge_imports(&use_item, &use_item2, MergeBehaviour::Full).zip(Some(use_item2))
+                Some((try_merge_imports(&use_item, &use_item2, MergeBehaviour::Full)?, use_item2))
             })?;

         rewriter.replace_ast(&use_item, &merged);
@@ -44,7 +44,7 @@ pub(crate) fn merge_imports(acc: &mut Assists, ctx: &AssistContext) -> Option<()
     } else {
         let (merged, to_delete) =
             next_prev().filter_map(|dir| neighbor(&tree, dir)).find_map(|use_tree| {
-                try_merge_trees(&tree, &use_tree, MergeBehaviour::Full).zip(Some(use_tree))
+                Some((try_merge_trees(&tree, &use_tree, MergeBehaviour::Full)?, use_tree))
             })?;

         rewriter.replace_ast(&tree, &merged);
diff --git a/crates/assists/src/utils/insert_use.rs b/crates/assists/src/utils/insert_use.rs
index f6025c99a..f9bd31cf3 100644
--- a/crates/assists/src/utils/insert_use.rs
+++ b/crates/assists/src/utils/insert_use.rs
@@ -274,7 +274,7 @@ fn common_prefix(lhs: &ast::Path, rhs: &ast::Path) -> Option<(ast::Path, ast::Pa
         }
         res = Some((lhs_curr.clone(), rhs_curr.clone()));

-        match lhs_curr.parent_path().zip(rhs_curr.parent_path()) {
+        match zip(lhs_curr.parent_path(), rhs_curr.parent_path()) {
             Some((lhs, rhs)) => {
                 lhs_curr = lhs;
                 rhs_curr = rhs;
@@ -452,7 +452,7 @@ fn find_insert_position(
     let path_node_iter = scope
         .as_syntax_node()
         .children()
-        .filter_map(|node| ast::Use::cast(node.clone()).zip(Some(node)))
+        .filter_map(|node| Some((ast::Use::cast(node.clone())?, node)))
         .flat_map(|(use_, node)| {
             let tree = use_.use_tree()?;
             let path = tree.path()?;
@@ -989,3 +989,7 @@ use foo::bar::baz::Qux;",
         assert_eq!(result.map(|u| u.to_string()), None);
     }
 }
+
+fn zip<T, U>(x: Option<T>, y: Option<U>) -> Option<(T, U)> {
+    Some((x?, y?))
+}