diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-09-06 14:34:45 +0200 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-10-31 11:39:08 +0000 |
commit | e76f9223ed2860d49e1e11297d4cfdcebf27428f (patch) | |
tree | 29c702e7449426826bfb212eba1999091674c28a | |
parent | b5118d1a6aa6dc2256d3f4620eb3185389531689 (diff) | |
download | gcc-e76f9223ed2860d49e1e11297d4cfdcebf27428f.zip gcc-e76f9223ed2860d49e1e11297d4cfdcebf27428f.tar.gz gcc-e76f9223ed2860d49e1e11297d4cfdcebf27428f.tar.bz2 |
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.patry@embecosm.com>
-rw-r--r-- | gcc/rust/backend/rust-compile-context.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/rust/backend/rust-compile-context.h b/gcc/rust/backend/rust-compile-context.h index e60d32c..c4bb817 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; |