Skip to content

Commit 019ad0c

Browse files
committed
Remove TODO in proc_macro now const_refs_to_static is stable
1 parent 6c85d31 commit 019ad0c

File tree

2 files changed

+11
-20
lines changed

2 files changed

+11
-20
lines changed

proc_macro/src/bridge/client.rs

+7-16
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,10 @@ macro_rules! define_client_handles {
1818
$(pub(super) $ity: AtomicU32,)*
1919
}
2020

21-
impl HandleCounters {
22-
// FIXME(eddyb) use a reference to the `static COUNTERS`, instead of
23-
// a wrapper `fn` pointer, once `const fn` can reference `static`s.
24-
extern "C" fn get() -> &'static Self {
25-
static COUNTERS: HandleCounters = HandleCounters {
26-
$($oty: AtomicU32::new(1),)*
27-
$($ity: AtomicU32::new(1),)*
28-
};
29-
&COUNTERS
30-
}
31-
}
21+
static COUNTERS: HandleCounters = HandleCounters {
22+
$($oty: AtomicU32::new(1),)*
23+
$($ity: AtomicU32::new(1),)*
24+
};
3225

3326
$(
3427
pub(crate) struct $oty {
@@ -259,9 +252,7 @@ pub(crate) fn is_available() -> bool {
259252
/// and forcing the use of APIs that take/return `S::TokenStream`, server-side.
260253
#[repr(C)]
261254
pub struct Client<I, O> {
262-
// FIXME(eddyb) use a reference to the `static COUNTERS`, instead of
263-
// a wrapper `fn` pointer, once `const fn` can reference `static`s.
264-
pub(super) get_handle_counters: extern "C" fn() -> &'static HandleCounters,
255+
pub(super) handle_counters: &'static HandleCounters,
265256

266257
pub(super) run: extern "C" fn(BridgeConfig<'_>) -> Buffer,
267258

@@ -346,7 +337,7 @@ fn run_client<A: for<'a, 's> DecodeMut<'a, 's, ()>, R: Encode<()>>(
346337
impl Client<crate::TokenStream, crate::TokenStream> {
347338
pub const fn expand1(f: impl Fn(crate::TokenStream) -> crate::TokenStream + Copy) -> Self {
348339
Client {
349-
get_handle_counters: HandleCounters::get,
340+
handle_counters: &COUNTERS,
350341
run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
351342
run_client(bridge, |input| f(crate::TokenStream(Some(input))).0)
352343
}),
@@ -360,7 +351,7 @@ impl Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
360351
f: impl Fn(crate::TokenStream, crate::TokenStream) -> crate::TokenStream + Copy,
361352
) -> Self {
362353
Client {
363-
get_handle_counters: HandleCounters::get,
354+
handle_counters: &COUNTERS,
364355
run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
365356
run_client(bridge, |(input, input2)| {
366357
f(crate::TokenStream(Some(input)), crate::TokenStream(Some(input2))).0

proc_macro/src/bridge/server.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -400,10 +400,10 @@ impl client::Client<crate::TokenStream, crate::TokenStream> {
400400
S: Server,
401401
S::TokenStream: Default,
402402
{
403-
let client::Client { get_handle_counters, run, _marker } = *self;
403+
let client::Client { handle_counters, run, _marker } = *self;
404404
run_server(
405405
strategy,
406-
get_handle_counters(),
406+
handle_counters,
407407
server,
408408
<MarkedTypes<S> as Types>::TokenStream::mark(input),
409409
run,
@@ -426,10 +426,10 @@ impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream
426426
S: Server,
427427
S::TokenStream: Default,
428428
{
429-
let client::Client { get_handle_counters, run, _marker } = *self;
429+
let client::Client { handle_counters, run, _marker } = *self;
430430
run_server(
431431
strategy,
432-
get_handle_counters(),
432+
handle_counters,
433433
server,
434434
(
435435
<MarkedTypes<S> as Types>::TokenStream::mark(input),

0 commit comments

Comments
 (0)