diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-07-26 16:48:37 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:56:01 +0100 |
commit | c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c (patch) | |
tree | fbb01ba1a4bb9037986247f37f1c9abf8268417c /gcc | |
parent | b190aaeff7b4b6e3b96dfe0b5277ccc93ccb9973 (diff) | |
download | gcc-c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c.zip gcc-c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c.tar.gz gcc-c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c.tar.bz2 |
gccrs: proc_macro: Add is_available callback
Add a callback from gcc to determine wether the bridge is available or
not.
gcc/rust/ChangeLog:
* expand/rust-proc-macro.cc (available): Add symbol
registration.
(load_macros_array): Likewise.
libgrust/ChangeLog:
* libproc_macro/proc_macro.cc (not_available): Add a
function to express bridge unavailability.
* libproc_macro/proc_macro.h (not_available): Likewise.
* libproc_macro/registration.h: Add symbol type.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/expand/rust-proc-macro.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-proc-macro.cc b/gcc/rust/expand/rust-proc-macro.cc index 7843ead..b6cfe25 100644 --- a/gcc/rust/expand/rust-proc-macro.cc +++ b/gcc/rust/expand/rust-proc-macro.cc @@ -56,6 +56,12 @@ static_assert ( ProcMacro::from_str_function_t>::value, "Registration callback signature not synced, check proc macro internals."); +static bool +available () +{ + return true; +} + template <typename Symbol, typename Callback> bool register_callback (void *handle, Symbol, std::string symbol_name, @@ -95,6 +101,9 @@ load_macros_array (std::string path) if (!REGISTER_CALLBACK (handle, __gccrs_proc_macro_from_str_fn, tokenstream_from_string)) return nullptr; + if (!REGISTER_CALLBACK (handle, __gccrs_proc_macro_is_available_fn, + available)) + return nullptr; // FIXME: Add CrateStableId handling, right now all versions may be loaded, // even incompatible ones. |