diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-03-30 20:40:07 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:28:45 +0100 |
commit | b0ab106df5fb26f9fbc971c3034a6391d2292ce0 (patch) | |
tree | 850cbff3c80a33d6d451712634764531bfcc9241 /gcc | |
parent | 36bca0cc1bbdb9da64a58cd1a7afaad30634e456 (diff) | |
download | gcc-b0ab106df5fb26f9fbc971c3034a6391d2292ce0.zip gcc-b0ab106df5fb26f9fbc971c3034a6391d2292ce0.tar.gz gcc-b0ab106df5fb26f9fbc971c3034a6391d2292ce0.tar.bz2 |
gccrs: expand: Add stub function for attribute expansion
Add a stub function and utility functions that should be called on some
nodes to expand attribute procedural macros.
gcc/rust/ChangeLog:
* expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute):
Stub for a single attribute expansion.
(ExpandVisitor::visit_outer_attrs): Visit the attributes to
expand on a given item.
* expand/rust-expand-visitor.h: Add function prototypes.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/expand/rust-expand-visitor.cc | 27 | ||||
-rw-r--r-- | gcc/rust/expand/rust-expand-visitor.h | 8 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-expand-visitor.cc b/gcc/rust/expand/rust-expand-visitor.cc index b2d1cf3..f93accd 100644 --- a/gcc/rust/expand/rust-expand-visitor.cc +++ b/gcc/rust/expand/rust-expand-visitor.cc @@ -1351,6 +1351,33 @@ ExpandVisitor::visit (AST::BareFunctionType &type) template <typename T> void +ExpandVisitor::expand_outer_attribute (T &item, AST::SimplePath &path) +{ + // FIXME: Implement outer attribute expansion +} + +template <typename T> +void +ExpandVisitor::visit_outer_attrs (T &item, std::vector<AST::Attribute> &attrs) +{ + for (auto it = attrs.begin (); it != attrs.end (); /* erase => No increment*/) + { + auto current = *it; + + it = attrs.erase (it); + expand_outer_attribute (item, current.get_path ()); + } +} + +template <typename T> +void +ExpandVisitor::visit_outer_attrs (T &item) +{ + visit_outer_attrs (item, item.get_outer_attrs ()); +} + +template <typename T> +void ExpandVisitor::expand_inner_attribute (T &item, AST::SimplePath &path) { // TODO: Warn about instability ? diff --git a/gcc/rust/expand/rust-expand-visitor.h b/gcc/rust/expand/rust-expand-visitor.h index 66dc187..e0ff37c 100644 --- a/gcc/rust/expand/rust-expand-visitor.h +++ b/gcc/rust/expand/rust-expand-visitor.h @@ -314,6 +314,14 @@ public: void visit (AST::BareFunctionType &type) override; template <typename T> + void expand_outer_attribute (T &item, AST::SimplePath &path); + + template <typename T> + void visit_outer_attrs (T &item, std::vector<AST::Attribute> &attrs); + + template <typename T> void visit_outer_attrs (T &item); + + template <typename T> void expand_inner_attribute (T &item, AST::SimplePath &Path); template <typename T> |