summary refs log tree commit diff
path: root/pkgs/development/tools/rust/rust-analyzer/no-1-57-map-while.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/rust/rust-analyzer/no-1-57-map-while.patch')
-rw-r--r--pkgs/development/tools/rust/rust-analyzer/no-1-57-map-while.patch20
1 files changed, 20 insertions, 0 deletions
diff --git a/pkgs/development/tools/rust/rust-analyzer/no-1-57-map-while.patch b/pkgs/development/tools/rust/rust-analyzer/no-1-57-map-while.patch
new file mode 100644
index 00000000000..6114f51831b
--- /dev/null
+++ b/pkgs/development/tools/rust/rust-analyzer/no-1-57-map-while.patch
@@ -0,0 +1,20 @@
+--- a/crates/ide_db/src/helpers.rs
++++ b/crates/ide_db/src/helpers.rs
+@@ -309,7 +309,7 @@ pub fn lint_eq_or_in_group(lint: &str, lint_is: &str) -> bool {
+ pub fn parse_tt_as_comma_sep_paths(input: ast::TokenTree) -> Option<Vec<ast::Path>> {
+     let r_paren = input.r_paren_token();
+     let tokens =
+-        input.syntax().children_with_tokens().skip(1).map_while(|it| match it.into_token() {
++        input.syntax().children_with_tokens().skip(1).map(|it| match it.into_token() {
+             // seeing a keyword means the attribute is unclosed so stop parsing here
+             Some(tok) if tok.kind().is_keyword() => None,
+             // don't include the right token tree parenthesis if it exists
+@@ -317,7 +317,7 @@ pub fn parse_tt_as_comma_sep_paths(input: ast::TokenTree) -> Option<Vec<ast::Pat
+             // only nodes that we can find are other TokenTrees, those are unexpected in this parse though
+             None => None,
+             Some(tok) => Some(tok),
+-        });
++        }).take_while(|tok| tok.is_some()).map(|tok| tok.unwrap());
+     let input_expressions = tokens.into_iter().group_by(|tok| tok.kind() == T![,]);
+     let paths = input_expressions
+         .into_iter()