aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-08-29 16:49:31 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 19:04:34 +0100
commite6cd1103050c48242923ae6f862437110331beb9 (patch)
tree397b23aaa34ed613c56ae172feea37b73355054f /gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
parent2504357146d5f9e5b9b87aa9cf79dd4f14e9fcd5 (diff)
downloadgcc-e6cd1103050c48242923ae6f862437110331beb9.zip
gcc-e6cd1103050c48242923ae6f862437110331beb9.tar.gz
gcc-e6cd1103050c48242923ae6f862437110331beb9.tar.bz2
gccrs: Add proc macro definition insertion
Insert proc macro definition from extern crates. gcc/rust/ChangeLog: * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Add proc macro definition insertion. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc')
-rw-r--r--gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
index 33a20cc..f24c91d 100644
--- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
@@ -104,12 +104,25 @@ TopLevel::visit (AST::ExternCrate &crate)
= Analysis::Mappings::get ()->lookup_derive_proc_macros (num);
auto sub_visitor = [&] () {
+ // TODO: Find a way to keep this part clean without the double dispatch.
if (derive_macros.has_value ())
- insert_macros (derive_macros.value (), ctx);
+ {
+ insert_macros (derive_macros.value (), ctx);
+ for (auto &macro : derive_macros.value ())
+ Analysis::Mappings::get ()->insert_derive_proc_macro_def (macro);
+ }
if (attribute_macros.has_value ())
- insert_macros (attribute_macros.value (), ctx);
+ {
+ insert_macros (attribute_macros.value (), ctx);
+ for (auto &macro : attribute_macros.value ())
+ Analysis::Mappings::get ()->insert_attribute_proc_macro_def (macro);
+ }
if (bang_macros.has_value ())
- insert_macros (bang_macros.value (), ctx);
+ {
+ insert_macros (bang_macros.value (), ctx);
+ for (auto &macro : bang_macros.value ())
+ Analysis::Mappings::get ()->insert_bang_proc_macro_def (macro);
+ }
};
if (crate.has_as_clause ())