diff options
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> |