gccrs: 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>
This commit is contained in:
parent
2d2fa103e1
commit
f915a3fe90
1 changed files with 23 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue