https://gcc.gnu.org/g:e76f9223ed2860d49e1e11297d4cfdcebf27428f
commit e76f9223ed2860d49e1e11297d4cfdcebf27428f Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Wed Sep 6 14:34:45 2023 +0200 Add containers for proc macro collection mappings Add one container for each kind of procedural macro mapping. Also add a new structure to gather informations required for derive procedural macros. Add different functions to fill those new containers. gcc/rust/ChangeLog: * backend/rust-compile-context.h (struct CustomDeriveInfo): Add new derive procedural macro metadata information holder for mappings. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Diff: --- gcc/rust/backend/rust-compile-context.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gcc/rust/backend/rust-compile-context.h b/gcc/rust/backend/rust-compile-context.h index e60d32ca9411..c4bb8177b68c 100644 --- a/gcc/rust/backend/rust-compile-context.h +++ b/gcc/rust/backend/rust-compile-context.h @@ -38,6 +38,13 @@ struct fncontext TyTy::BaseType *retty; }; +struct CustomDeriveInfo +{ + tree fndecl; + std::string trait_name; + std::vector<std::string> attributes; +}; + class Context { public: @@ -357,6 +364,18 @@ public: static hashval_t type_hasher (tree type); + void collect_attribute_proc_macro (tree fndecl) + { + attribute_macros.push_back (fndecl); + } + + void collect_bang_proc_macro (tree fndecl) { bang_macros.push_back (fndecl); } + + void collect_derive_proc_macro (CustomDeriveInfo macro) + { + custom_derive_macros.push_back (macro); + } + private: Resolver::Resolver *resolver; Resolver::TypeCheckContext *tyctx; @@ -381,6 +400,10 @@ private: std::map<HirId, tree> implicit_pattern_bindings; std::map<hashval_t, tree> main_variants; + std::vector<CustomDeriveInfo> custom_derive_macros; + std::vector<tree> attribute_macros; + std::vector<tree> bang_macros; + // closure bindings std::vector<HirId> closure_scope_bindings; std::map<HirId, std::map<HirId, tree>> closure_bindings;