Unnamed repository; edit this file 'description' to name the repository.
add path_from_idents and token_tree_from_node in SyntaxFactory
bit-aloo 8 weeks ago
parent 6e97128 · commit f299598
-rw-r--r--crates/syntax/src/ast/syntax_factory/constructors.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/crates/syntax/src/ast/syntax_factory/constructors.rs b/crates/syntax/src/ast/syntax_factory/constructors.rs
index fa81dfad1f..14bd66d79d 100644
--- a/crates/syntax/src/ast/syntax_factory/constructors.rs
+++ b/crates/syntax/src/ast/syntax_factory/constructors.rs
@@ -2049,6 +2049,23 @@ impl SyntaxFactory {
self.path_unqualified(self.path_segment(self.name_ref(ident)))
}
+ pub fn path_from_idents<'a>(
+ &self,
+ parts: impl IntoIterator<Item = &'a str>,
+ ) -> Option<ast::Path> {
+ let mut iter = parts.into_iter();
+ let base = self.ident_path(iter.next()?);
+ let path = iter.fold(base, |base, s| {
+ let segment = self.ident_path(s);
+ self.path_concat(base, segment)
+ });
+ Some(path)
+ }
+
+ pub fn token_tree_from_node(&self, node: &SyntaxNode) -> ast::TokenTree {
+ make::ext::token_tree_from_node(node).clone_for_update()
+ }
+
pub fn expr_unit(&self) -> ast::Expr {
self.expr_tuple([]).into()
}