aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-09-06 14:34:45 +0200
committerPhilip Herron <philip.herron@embecosm.com>2023-10-31 11:39:08 +0000
commite76f9223ed2860d49e1e11297d4cfdcebf27428f (patch)
tree29c702e7449426826bfb212eba1999091674c28a /gcc/rust
parentb5118d1a6aa6dc2256d3f4620eb3185389531689 (diff)
downloadgcc-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>
Diffstat (limited to 'gcc/rust')
-rw-r--r--gcc/rust/backend/rust-compile-context.h23
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;