aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/util/rust-hir-map.cc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-02-23 10:05:13 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2022-02-23 14:36:11 +0100
commit48b3fe622e9a582b076c6f4b19b5e8b69891ac31 (patch)
treef7a3fd3afb0c2e2b2678d80dcd742da23c1b8f9a /gcc/rust/util/rust-hir-map.cc
parent0b46175fb8f807b4a07918001f0490d0f3fc0ba5 (diff)
downloadgcc-48b3fe622e9a582b076c6f4b19b5e8b69891ac31.zip
gcc-48b3fe622e9a582b076c6f4b19b5e8b69891ac31.tar.gz
gcc-48b3fe622e9a582b076c6f4b19b5e8b69891ac31.tar.bz2
macros: Add optional builtin transcribers to MacroRulesDefinition
Diffstat (limited to 'gcc/rust/util/rust-hir-map.cc')
-rw-r--r--gcc/rust/util/rust-hir-map.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index 1348e29..1c0e8fc 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -19,6 +19,7 @@
#include "rust-hir-map.h"
#include "rust-ast-full.h"
#include "rust-hir-full.h"
+#include "rust-macro-builtins.h"
namespace Rust {
namespace Analysis {
@@ -741,6 +742,16 @@ Mappings::iterate_trait_items (
void
Mappings::insert_macro_def (AST::MacroRulesDefinition *macro)
{
+ static std::map<std::string, std::function<AST::ASTFragment (
+ Location, AST::MacroInvocData &)>>
+ builtin_macros = {
+ {"assert", MacroBuiltin::assert},
+ };
+
+ auto builtin = builtin_macros.find (macro->get_rule_name ());
+ if (builtin != builtin_macros.end ())
+ macro->set_builtin_transcriber (builtin->second);
+
auto it = macroMappings.find (macro->get_node_id ());
rust_assert (it == macroMappings.end ());