about summary refs log tree commit diff
path: root/src/tools/rust-analyzer/crates/syntax
diff options
context:
space:
mode:
authorShoyu Vanilla <modulo641@gmail.com>2024-11-25 01:01:50 +0900
committerShoyu Vanilla <modulo641@gmail.com>2024-11-26 01:47:15 +0900
commitf091ec669e3f46bbf62048cb2a4b42ea5d9536ad (patch)
tree6c833d23d552ab3bae52df54f2fc70684ddd3160 /src/tools/rust-analyzer/crates/syntax
parent309c671083006dcc5b16dd023f90cb91d4230002 (diff)
downloadrust-f091ec669e3f46bbf62048cb2a4b42ea5d9536ad.tar.gz
rust-f091ec669e3f46bbf62048cb2a4b42ea5d9536ad.zip
Migrate `add_turbo_fish` to `SyntaxEditor`
Diffstat (limited to 'src/tools/rust-analyzer/crates/syntax')
-rw-r--r--src/tools/rust-analyzer/crates/syntax/src/ast/syntax_factory/constructors.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/syntax/src/ast/syntax_factory/constructors.rs b/src/tools/rust-analyzer/crates/syntax/src/ast/syntax_factory/constructors.rs
index 9f88add0f78..6e90b2ba47f 100644
--- a/src/tools/rust-analyzer/crates/syntax/src/ast/syntax_factory/constructors.rs
+++ b/src/tools/rust-analyzer/crates/syntax/src/ast/syntax_factory/constructors.rs
@@ -107,4 +107,22 @@ impl SyntaxFactory {
 
         ast
     }
+
+    pub fn turbofish_generic_arg_list(
+        &self,
+        args: impl IntoIterator<Item = ast::GenericArg> + Clone,
+    ) -> ast::GenericArgList {
+        let ast = make::turbofish_generic_arg_list(args.clone()).clone_for_update();
+
+        if let Some(mut mapping) = self.mappings() {
+            let mut builder = SyntaxMappingBuilder::new(ast.syntax().clone());
+            builder.map_children(
+                args.into_iter().map(|arg| arg.syntax().clone()),
+                ast.generic_args().map(|arg| arg.syntax().clone()),
+            );
+            builder.finish(&mut mapping);
+        }
+
+        ast
+    }
 }