Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | crates/syntax/src/ast/syntax_factory/constructors.rs | 17 |
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() } |