aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-11-07 11:37:39 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 19:13:14 +0100
commit32f16cac2d373892129585e048fdc861d0dface9 (patch)
tree5d8760266d73e25d2e848c08b013ae2e11cc692e
parent513b0154ab1f00e92d2072a5858f585510599b9b (diff)
downloadgcc-32f16cac2d373892129585e048fdc861d0dface9.zip
gcc-32f16cac2d373892129585e048fdc861d0dface9.tar.gz
gcc-32f16cac2d373892129585e048fdc861d0dface9.tar.bz2
gccrs: Move templated functions to header file
Templated functions shall remain in header files to stay in line with the rest of the codebase. gcc/rust/ChangeLog: * ast/rust-ast-collector.cc (TokenCollector::visit): Move to header file. (TokenCollector::visit_items_joined_by_separator): Likewise. (TokenCollector::visit_as_line): Likewise. (TokenCollector::visit_items_as_lines): Likewise. (TokenCollector::visit_items_as_block): Likewise. * ast/rust-ast-collector.h: Add implementation. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
-rw-r--r--gcc/rust/ast/rust-ast-collector.cc70
-rw-r--r--gcc/rust/ast/rust-ast-collector.h52
2 files changed, 46 insertions, 76 deletions
diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc
index 05c9630..cb8dfd8 100644
--- a/gcc/rust/ast/rust-ast-collector.cc
+++ b/gcc/rust/ast/rust-ast-collector.cc
@@ -54,76 +54,6 @@ TokenCollector::visit (AST::Item &item)
item.accept_vis (*this);
}
-template <typename T>
-void
-TokenCollector::visit (T &node)
-{
- node.accept_vis (*this);
-}
-
-template <typename T>
-void
-TokenCollector::visit_items_joined_by_separator (T &collection,
- TokenId separator,
- size_t start_offset,
- size_t end_offset)
-{
- if (collection.size () > start_offset)
- {
- visit (collection.at (start_offset));
- auto size = collection.size () - end_offset;
- for (size_t i = start_offset + 1; i < size; i++)
- {
- push (Rust::Token::make (separator, UNDEF_LOCATION));
- visit (collection.at (i));
- }
- }
-}
-
-template <typename T>
-void
-TokenCollector::visit_as_line (T &item, std::vector<TokenPtr> trailing)
-{
- indentation ();
- visit (item);
- for (auto &token : trailing)
- push (token);
- newline ();
-}
-
-template <typename T>
-void
-TokenCollector::visit_items_as_lines (T &collection,
- std::vector<TokenPtr> trailing)
-{
- for (auto &item : collection)
- visit_as_line (item, trailing);
-}
-
-template <typename T>
-void
-TokenCollector::visit_items_as_block (T &collection,
- std::vector<TokenPtr> trailing,
- TokenId left_brace, TokenId right_brace)
-{
- push (Rust::Token::make (left_brace, UNDEF_LOCATION));
- if (collection.empty ())
- {
- push (Rust::Token::make (right_brace, UNDEF_LOCATION));
- newline ();
- }
- else
- {
- newline ();
- increment_indentation ();
- visit_items_as_lines (collection, trailing);
- decrement_indentation ();
- indentation ();
- push (Rust::Token::make (right_brace, UNDEF_LOCATION));
- newline ();
- }
-}
-
void
TokenCollector::trailing_comma ()
{
diff --git a/gcc/rust/ast/rust-ast-collector.h b/gcc/rust/ast/rust-ast-collector.h
index 20ffd8e..55c13d1 100644
--- a/gcc/rust/ast/rust-ast-collector.h
+++ b/gcc/rust/ast/rust-ast-collector.h
@@ -97,13 +97,32 @@ private:
void visit_items_joined_by_separator (T &collection,
TokenId separator = COMMA,
size_t start_offset = 0,
- size_t end_offset = 0);
+ size_t end_offset = 0)
+ {
+ if (collection.size () > start_offset)
+ {
+ visit (collection.at (start_offset));
+ auto size = collection.size () - end_offset;
+ for (size_t i = start_offset + 1; i < size; i++)
+ {
+ push (Rust::Token::make (separator, UNDEF_LOCATION));
+ visit (collection.at (i));
+ }
+ }
+ }
/**
* Visit item placing end of line after.
*/
template <typename T>
- void visit_as_line (T &item, std::vector<TokenPtr> trailing = {});
+ void visit_as_line (T &item, std::vector<TokenPtr> trailing = {})
+ {
+ indentation ();
+ visit (item);
+ for (auto &token : trailing)
+ push (token);
+ newline ();
+ }
/**
* Visit each item in @collection "as line".
@@ -111,8 +130,11 @@ private:
* @see visit_as_line
*/
template <typename T>
- void visit_items_as_lines (T &collection,
- std::vector<TokenPtr> trailing = {});
+ void visit_items_as_lines (T &collection, std::vector<TokenPtr> trailing = {})
+ {
+ for (auto &item : collection)
+ visit_as_line (item, trailing);
+ }
/**
* Visit each item in @collection as lines inside a block delimited by braces
@@ -122,7 +144,25 @@ private:
template <typename T>
void visit_items_as_block (T &collection, std::vector<TokenPtr> trailing = {},
TokenId left_brace = LEFT_CURLY,
- TokenId right_brace = RIGHT_CURLY);
+ TokenId right_brace = RIGHT_CURLY)
+ {
+ push (Rust::Token::make (left_brace, UNDEF_LOCATION));
+ if (collection.empty ())
+ {
+ push (Rust::Token::make (right_brace, UNDEF_LOCATION));
+ newline ();
+ }
+ else
+ {
+ newline ();
+ increment_indentation ();
+ visit_items_as_lines (collection, trailing);
+ decrement_indentation ();
+ indentation ();
+ push (Rust::Token::make (right_brace, UNDEF_LOCATION));
+ newline ();
+ }
+ }
void trailing_comma ();
void newline ();
@@ -155,7 +195,7 @@ public:
/**
* @see visit<std::unique_ptr<T>>
*/
- template <typename T> void visit (T &node);
+ template <typename T> void visit (T &node) { node.accept_vis (*this); }
void visit (Visitable &v);
void visit (LoopLabel &label);