@@ -292,114 +292,46 @@ macro_rules! c_enum {
292
292
( @ty) => { $crate:: prelude:: CEnumRepr } ;
293
293
}
294
294
295
- // This is a pretty horrible hack to allow us to conditionally mark some functions as 'const',
296
- // without requiring users of this macro to care "libc_const_extern_fn".
297
- //
298
- // When 'libc_const_extern_fn' is enabled, we emit the captured 'const' keyword in the expanded
299
- // function.
300
- //
301
- // When 'libc_const_extern_fn' is disabled, we always emit a plain 'pub unsafe extern fn'.
302
- // Note that the expression matched by the macro is exactly the same - this allows
303
- // users of this macro to work whether or not 'libc_const_extern_fn' is enabled
304
- //
305
- // Unfortunately, we need to duplicate most of this macro between the 'cfg_if' blocks.
306
- // This is because 'const unsafe extern fn' won't even parse on older compilers,
307
- // so we need to avoid emitting it at all of 'libc_const_extern_fn'.
308
- //
309
- // Specifically, moving the 'cfg_if' into the macro body will *not* work. Doing so would cause the
310
- // '#[cfg(libc_const_extern_fn)]' to be emitted into user code. The 'cfg' gate will not stop Rust
311
- // from trying to parse the 'pub const unsafe extern fn', so users would get a compiler error even
312
- // when the 'libc_const_extern_fn' feature is disabled.
313
-
314
- // FIXME(ctest): ctest can't handle `const extern` functions, we should be able to remove this
315
- // cfg completely.
316
- // FIXME(ctest): ctest can't handle `$(,)?` so we use `$(,)*` which isn't quite correct.
317
- cfg_if ! {
318
- if #[ cfg( libc_const_extern_fn) ] {
319
- /// Define an `unsafe` function that is const as long as `libc_const_extern_fn` is enabled.
320
- macro_rules! f {
321
- ( $(
322
- $( #[ $attr: meta] ) *
323
- pub $( { $constness: ident} ) * fn $i: ident( $( $arg: ident: $argty: ty) , * $( , ) * ) -> $ret: ty
324
- $body: block
325
- ) * ) => ( $(
326
- #[ inline]
327
- $( #[ $attr] ) *
328
- pub $( $constness) * unsafe extern "C" fn $i( $( $arg: $argty) , * ) -> $ret
329
- $body
330
- ) * )
331
- }
332
-
333
- /// Define a safe function that is const as long as `libc_const_extern_fn` is enabled.
334
- macro_rules! safe_f {
335
- ( $(
336
- $( #[ $attr: meta] ) *
337
- pub $( { $constness: ident} ) * fn $i: ident( $( $arg: ident: $argty: ty) , * $( , ) * ) -> $ret: ty
338
- $body: block
339
- ) * ) => ( $(
340
- #[ inline]
341
- $( #[ $attr] ) *
342
- pub $( $constness) * extern "C" fn $i( $( $arg: $argty) , * ) -> $ret
343
- $body
344
- ) * )
345
- }
346
-
347
- /// A nonpublic function that is const as long as `libc_const_extern_fn` is enabled.
348
- macro_rules! const_fn {
349
- ( $(
350
- $( #[ $attr: meta] ) *
351
- $( { $constness: ident} ) * fn $i: ident( $( $arg: ident: $argty: ty) , * $( , ) * ) -> $ret: ty
352
- $body: block
353
- ) * ) => ( $(
354
- #[ inline]
355
- $( #[ $attr] ) *
356
- $( $constness) * fn $i( $( $arg: $argty) , * ) -> $ret
357
- $body
358
- ) * )
359
- }
360
- } else {
361
- /// Define an `unsafe` function that is const as long as `libc_const_extern_fn` is enabled.
362
- macro_rules! f {
363
- ( $(
364
- $( #[ $attr: meta] ) *
365
- pub $( { $constness: ident} ) * fn $i: ident( $( $arg: ident: $argty: ty) , * $( , ) * ) -> $ret: ty
366
- $body: block
367
- ) * ) => ( $(
368
- #[ inline]
369
- $( #[ $attr] ) *
370
- pub unsafe extern "C" fn $i( $( $arg: $argty) , * ) -> $ret
371
- $body
372
- ) * )
373
- }
295
+ /// Define a `unsafe` function.
296
+ macro_rules! f {
297
+ ( $(
298
+ $( #[ $attr: meta] ) *
299
+ pub $( { $constness: ident} ) ? fn $i: ident( $( $arg: ident: $argty: ty) ,* $( , ) * ) -> $ret: ty
300
+ $body: block
301
+ ) * ) => ( $(
302
+ #[ inline]
303
+ $( #[ $attr] ) *
304
+ pub $( $constness) ? unsafe extern "C" fn $i( $( $arg: $argty) ,* ) -> $ret
305
+ $body
306
+ ) * )
307
+ }
374
308
375
- /// Define a safe function that is const as long as `libc_const_extern_fn` is enabled .
376
- macro_rules! safe_f {
377
- ( $(
378
- $( #[ $attr: meta] ) *
379
- pub $( { $constness: ident} ) * fn $i: ident( $( $arg: ident: $argty: ty) , * $( , ) * ) -> $ret: ty
380
- $body: block
381
- ) * ) => ( $(
382
- #[ inline]
383
- $( #[ $attr] ) *
384
- pub extern "C" fn $i( $( $arg: $argty) , * ) -> $ret
385
- $body
386
- ) * )
387
- }
309
+ /// Define a safe function.
310
+ macro_rules! safe_f {
311
+ ( $(
312
+ $( #[ $attr: meta] ) *
313
+ pub $( { $constness: ident} ) ? fn $i: ident( $( $arg: ident: $argty: ty) ,* $( , ) * ) -> $ret: ty
314
+ $body: block
315
+ ) * ) => ( $(
316
+ #[ inline]
317
+ $( #[ $attr] ) *
318
+ pub $ ( $constness ) ? extern "C" fn $i( $( $arg: $argty) ,* ) -> $ret
319
+ $body
320
+ ) * )
321
+ }
388
322
389
- /// A nonpublic function that is const as long as `libc_const_extern_fn` is enabled.
390
- macro_rules! const_fn {
391
- ( $(
392
- $( #[ $attr: meta] ) *
393
- $( { $constness: ident} ) * fn $i: ident( $( $arg: ident: $argty: ty) , * $( , ) * ) -> $ret: ty
394
- $body: block
395
- ) * ) => ( $(
396
- #[ inline]
397
- $( #[ $attr] ) *
398
- fn $i( $( $arg: $argty) , * ) -> $ret
399
- $body
400
- ) * )
401
- }
402
- }
323
+ /// Define a nonpublic function.
324
+ macro_rules! const_fn {
325
+ ( $(
326
+ $( #[ $attr: meta] ) *
327
+ $( { $constness: ident} ) ? fn $i: ident( $( $arg: ident: $argty: ty) ,* $( , ) * ) -> $ret: ty
328
+ $body: block
329
+ ) * ) => ( $(
330
+ #[ inline]
331
+ $( #[ $attr] ) *
332
+ $( $constness) ? fn $i( $( $arg: $argty) ,* ) -> $ret
333
+ $body
334
+ ) * )
403
335
}
404
336
405
337
macro_rules! __item {
0 commit comments