[gcc/devel/rust/master] ast-builder: Add new functions to create type paths.
Thomas Schwinge
tschwinge@gcc.gnu.org
Wed Mar 26 14:10:54 GMT 2025
https://gcc.gnu.org/g:b57ab7aaa7a9472ec7204a5d5c539f05c93e121f
commit b57ab7aaa7a9472ec7204a5d5c539f05c93e121f
Author: Arthur Cohen <arthur.cohen@embecosm.com>
Date: Wed Jan 29 18:11:28 2025 +0000
ast-builder: Add new functions to create type paths.
gcc/rust/ChangeLog:
* ast/rust-ast-builder.cc (Builder::type_path): New functions.
* ast/rust-ast-builder.h: Declare them.
Diff:
---
gcc/rust/ast/rust-ast-builder.cc | 21 ++++++++++++++++++++-
gcc/rust/ast/rust-ast-builder.h | 4 ++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/gcc/rust/ast/rust-ast-builder.cc b/gcc/rust/ast/rust-ast-builder.cc
index b3ee387ef9c1..4afe32910764 100644
--- a/gcc/rust/ast/rust-ast-builder.cc
+++ b/gcc/rust/ast/rust-ast-builder.cc
@@ -158,13 +158,32 @@ Builder::single_generic_type_path (LangItem::Kind lang_item,
return std::unique_ptr<Type> (new TypePath (std::move (segments), loc));
}
+TypePath
+Builder::type_path (std::vector<std::unique_ptr<TypePathSegment>> &&segments,
+ bool opening_scope) const
+{
+ return TypePath (std::move (segments), loc, opening_scope);
+}
+
+TypePath
+Builder::type_path (std::vector<std::string> &&segments,
+ bool opening_scope) const
+{
+ auto type_segments = std::vector<std::unique_ptr<TypePathSegment>> ();
+
+ for (auto &&segment : segments)
+ type_segments.emplace_back (type_path_segment (segment));
+
+ return TypePath (std::move (type_segments), loc, opening_scope);
+}
+
TypePath
Builder::type_path (std::unique_ptr<TypePathSegment> &&segment) const
{
auto segments = std::vector<std::unique_ptr<TypePathSegment>> ();
segments.emplace_back (std::move (segment));
- return TypePath (std::move (segments), loc);
+ return type_path (std::move (segments));
}
TypePath
diff --git a/gcc/rust/ast/rust-ast-builder.h b/gcc/rust/ast/rust-ast-builder.h
index 372e355fa9b6..333b6791ad2c 100644
--- a/gcc/rust/ast/rust-ast-builder.h
+++ b/gcc/rust/ast/rust-ast-builder.h
@@ -132,6 +132,10 @@ public:
std::unique_ptr<Type> single_generic_type_path (LangItem::Kind lang_item,
GenericArgs args) const;
+ TypePath type_path (std::vector<std::unique_ptr<TypePathSegment>> &&segment,
+ bool opening_scope = false) const;
+ TypePath type_path (std::vector<std::string> &&segments,
+ bool opening_scope = false) const;
TypePath type_path (std::unique_ptr<TypePathSegment> &&segment) const;
TypePath type_path (std::string type) const;
TypePath type_path (LangItem::Kind lang_item) const;
More information about the Gcc-cvs
mailing list