UNSUPPORTED_FN_PTR_CALLING_CONVENTIONS in rustc_lint_defs::builtin - Rust
Description: The `unsupported_fn_ptr_calling_conventions` lint is output whenever there is a use of a target dependent calling convention on a target that does not support this calling convention on a function pointer.

Skip to main content

## UNSUPPORTED_FN_PTR_CALLING_CONVENTIONS

# Static UNSUPPORTED_FN_PTR_CALLING_CONVENTIONS

Source

    pub static UNSUPPORTED_FN_PTR_CALLING_CONVENTIONS: &Lint

Expand description

The `unsupported_fn_ptr_calling_conventions` lint is output whenever there is a use of a target dependent calling convention on a target that does not support this calling convention on a function pointer.

For example `stdcall` does not make much sense for a x86_64 or, more apparently, powerpc code, because this calling convention was never specified for those targets.

#### §Example

ⓘ

    fn stdcall_ptr(f: extern "stdcall" fn ()) {
        f()
    }

This will produce:

    warning: the calling convention `"stdcall"` is not supported on this target
      --> $DIR/unsupported.rs:34:15
       |
    LL | fn stdcall_ptr(f: extern "stdcall" fn()) {
       |               ^^^^^^^^^^^^^^^^^^^^^^^^
       |
       = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
       = note: for more information, see issue #130260 <https://github.com/rust-lang/rust/issues/130260>
       = note: `#[warn(unsupported_fn_ptr_calling_conventions)]` on by default

#### §Explanation

On most of the targets the behaviour of `stdcall` and similar calling conventions is not defined at all, but was previously accepted due to a bug in the implementation of the compiler.