Unnamed repository; edit this file 'description' to name the repository.
fix: allow equality expressions in parsing of format_args
dfireBird 5 months ago
parent b30c688 · commit d24a631
-rw-r--r--crates/ide-assists/src/handlers/extract_function.rs22
-rw-r--r--crates/parser/src/grammar/expressions/atom.rs2
2 files changed, 23 insertions, 1 deletions
diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs
index 2a0a3839b3..9af76eb23b 100644
--- a/crates/ide-assists/src/handlers/extract_function.rs
+++ b/crates/ide-assists/src/handlers/extract_function.rs
@@ -6271,4 +6271,26 @@ fn $0fun_name(s: &Foo) {
}"#,
);
}
+
+ #[test]
+ fn parameter_is_added_used_in_eq_expression_in_macro() {
+ check_assist(
+ extract_function,
+ r#"
+//- minicore: fmt
+fn foo() {
+ let v = 123;
+ $0print!("{v:?}{}", v == 123);$0
+}"#,
+ r#"
+fn foo() {
+ let v = 123;
+ fun_name(v);
+}
+
+fn $0fun_name(v: i32) {
+ print!("{v:?}{}", v == 123);
+}"#,
+ );
+ }
}
diff --git a/crates/parser/src/grammar/expressions/atom.rs b/crates/parser/src/grammar/expressions/atom.rs
index cde62e0323..ab18309308 100644
--- a/crates/parser/src/grammar/expressions/atom.rs
+++ b/crates/parser/src/grammar/expressions/atom.rs
@@ -283,7 +283,7 @@ fn builtin_expr(p: &mut Parser<'_>) -> Option<CompletedMarker> {
if p.eat(T![,]) {
while !p.at(EOF) && !p.at(T![')']) {
let m = p.start();
- if p.at(IDENT) && p.nth_at(1, T![=]) {
+ if p.at(IDENT) && p.nth_at(1, T![=]) && !p.nth_at(2, T![=]) {
name(p);
p.bump(T![=]);
}