Auto merge of #86231 - nagisa:nagisa/abi-allowlist, r=petrochenkov

Replace per-target ABI denylist with an allowlist

It makes very little sense to maintain denylists of ABIs when, as far as
non-generic ABIs are concerned, targets usually only support a small
subset of the available ABIs.

This has historically been a cause of bugs such as us allowing use of
the platform-specific ABIs on x86 targets – these in turn would cause
LLVM errors or assertions to fire.

In this PR we got rid of the per-target ABI denylists, and instead compute
which ABIs are supported with a simple match based on, mostly, the
`Target::arch` field. Among other things, this makes it impossible to
forget to consider this problem (in either direction) and forces one to
consider what the ABI support looks like when adding an ABI (rarely)
rather than target (often), which should hopefully also reduce the
cognitive load on both contributors as well as reviewers.

Fixes #57182

Sponsored by: standard.ai

---

## Summary for teams

One significant user-facing change after this PR is that there's now a future compat warning when building…

* `stdcall`, `fastcall`, `thiscall` using code with targets other than 32-bit x86 (i386...i686) or *-windows-*;
* `vectorcall` using code when building for targets other than x86 (either 32 or 64 bit) or *-windows-*.

Previously these ABIs have been accepted much more broadly, even for architectures and targets where this made no sense (e.g. on wasm32) and would fall back to the C ABI. In practice this doesn't seem to be used too widely and the [breakages in crater](https://github.com/rust-lang/rust/pull/86231#issuecomment-866300943) that we see are mostly about Windows-specific code that was missing relevant `cfg`s and just happened to successfully `check` on Linux for one reason or another.

The intention is that this warning becomes a hard error after some time.
This commit is contained in:
bors 2021-07-06 14:02:19 +00:00
commit b09dad3edd
101 changed files with 1507 additions and 1038 deletions

View file

@ -1,15 +1,14 @@
// compile-flags: -C opt-level=0
// ignore-arm stdcall isn't supported
// ignore-aarch64 stdcall isn't supported
// ignore-riscv64 stdcall isn't supported
// needs-llvm-components: x86
// compile-flags: --target=i686-pc-windows-msvc --crate-type=rlib -Cno-prepopulate-passes
#![no_core]
#![feature(no_core, lang_items, c_unwind)]
#[lang="sized"]
trait Sized { }
// Test that `nounwind` atributes are correctly applied to exported `stdcall` and `stdcall-unwind`
// extern functions. `stdcall-unwind` functions MUST NOT have this attribute. We disable
// optimizations above to prevent LLVM from inferring the attribute.
#![crate_type = "lib"]
#![feature(c_unwind)]
// CHECK: @rust_item_that_cannot_unwind() unnamed_addr #0 {
#[no_mangle]
pub extern "stdcall" fn rust_item_that_cannot_unwind() {

View file

@ -1,16 +1,14 @@
// compile-flags: -C opt-level=0
// ignore-arm thiscall isn't supported
// ignore-aarch64 thiscall isn't supported
// ignore-riscv64 thiscall isn't supported
// needs-llvm-components: x86
// compile-flags: --target=i686-pc-windows-msvc --crate-type=rlib -Cno-prepopulate-passes
#![no_core]
#![feature(no_core, lang_items, c_unwind, abi_thiscall)]
#[lang="sized"]
trait Sized { }
// Test that `nounwind` atributes are correctly applied to exported `thiscall` and
// `thiscall-unwind` extern functions. `thiscall-unwind` functions MUST NOT have this attribute. We
// disable optimizations above to prevent LLVM from inferring the attribute.
#![crate_type = "lib"]
#![feature(abi_thiscall)]
#![feature(c_unwind)]
// CHECK: @rust_item_that_cannot_unwind() unnamed_addr #0 {
#[no_mangle]
pub extern "thiscall" fn rust_item_that_cannot_unwind() {

View file

@ -0,0 +1,58 @@
error[E0570]: `"ptx-kernel"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:24:1
|
LL | extern "ptx-kernel" fn ptx() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:26:1
|
LL | extern "amdgpu-kernel" fn amdgpu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"wasm"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:28:1
|
LL | extern "wasm" fn wasm() {}
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"msp430-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:33:1
|
LL | extern "msp430-interrupt" fn msp430() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"avr-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:35:1
|
LL | extern "avr-interrupt" fn avr() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"x86-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:37:1
|
LL | extern "x86-interrupt" fn x86() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: use of calling convention not supported on this target
--> $DIR/unsupported.rs:39:1
|
LL | extern "stdcall" fn stdcall() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unsupported_calling_conventions)]` on by default
= 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 #00000 <https://github.com/rust-lang/rust/issues/00000>
warning: use of calling convention not supported on this target
--> $DIR/unsupported.rs:44:1
|
LL | extern "thiscall" fn thiscall() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= 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 #00000 <https://github.com/rust-lang/rust/issues/00000>
error: aborting due to 6 previous errors; 2 warnings emitted
For more information about this error, try `rustc --explain E0570`.

View file

@ -0,0 +1,39 @@
error[E0570]: `"ptx-kernel"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:24:1
|
LL | extern "ptx-kernel" fn ptx() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:26:1
|
LL | extern "amdgpu-kernel" fn amdgpu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"wasm"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:28:1
|
LL | extern "wasm" fn wasm() {}
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"aapcs"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:30:1
|
LL | extern "aapcs" fn aapcs() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"msp430-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:33:1
|
LL | extern "msp430-interrupt" fn msp430() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"avr-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:35:1
|
LL | extern "avr-interrupt" fn avr() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0570`.

View file

@ -0,0 +1,48 @@
// revisions: x64 i686 aarch64
//
// [x64] needs-llvm-components: x86
// [x64]compile-flags: --target=x86_64-unknown-linux-gnu --crate-type=rlib
// [i686] needs-llvm-components: x86
// [i686]compile-flags: --target=i686-unknown-linux-gnu --crate-type=rlib
// [aarch64] needs-llvm-components: aarch64
// [aarch64]compile-flags: --target=aarch64-unknown-linux-gnu --crate-type=rlib
#![no_core]
#![feature(
no_core,
lang_items,
abi_ptx,
abi_msp430_interrupt,
abi_avr_interrupt,
abi_thiscall,
abi_amdgpu_kernel,
wasm_abi,
abi_x86_interrupt
)]
#[lang="sized"]
trait Sized { }
extern "ptx-kernel" fn ptx() {}
//~^ ERROR is not a supported ABI
extern "amdgpu-kernel" fn amdgpu() {}
//~^ ERROR is not a supported ABI
extern "wasm" fn wasm() {}
//~^ ERROR is not a supported ABI
extern "aapcs" fn aapcs() {}
//[x64]~^ ERROR is not a supported ABI
//[i686]~^^ ERROR is not a supported ABI
extern "msp430-interrupt" fn msp430() {}
//~^ ERROR is not a supported ABI
extern "avr-interrupt" fn avr() {}
//~^ ERROR is not a supported ABI
extern "x86-interrupt" fn x86() {}
//[aarch64]~^ ERROR is not a supported ABI
extern "stdcall" fn stdcall() {}
//[x64]~^ WARN use of calling convention not supported
//[x64]~^^ WARN this was previously accepted
//[aarch64]~^^^ WARN use of calling convention not supported
//[aarch64]~^^^^ WARN this was previously accepted
extern "thiscall" fn thiscall() {}
//[x64]~^ WARN use of calling convention not supported
//[x64]~^^ WARN this was previously accepted
//[aarch64]~^^^ WARN use of calling convention not supported
//[aarch64]~^^^^ WARN this was previously accepted

View file

@ -0,0 +1,58 @@
error[E0570]: `"ptx-kernel"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:24:1
|
LL | extern "ptx-kernel" fn ptx() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:26:1
|
LL | extern "amdgpu-kernel" fn amdgpu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"wasm"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:28:1
|
LL | extern "wasm" fn wasm() {}
| ^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"aapcs"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:30:1
|
LL | extern "aapcs" fn aapcs() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"msp430-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:33:1
|
LL | extern "msp430-interrupt" fn msp430() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"avr-interrupt"` is not a supported ABI for the current target
--> $DIR/unsupported.rs:35:1
|
LL | extern "avr-interrupt" fn avr() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: use of calling convention not supported on this target
--> $DIR/unsupported.rs:39:1
|
LL | extern "stdcall" fn stdcall() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unsupported_calling_conventions)]` on by default
= 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 #00000 <https://github.com/rust-lang/rust/issues/00000>
warning: use of calling convention not supported on this target
--> $DIR/unsupported.rs:44:1
|
LL | extern "thiscall" fn thiscall() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= 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 #00000 <https://github.com/rust-lang/rust/issues/00000>
error: aborting due to 6 previous errors; 2 warnings emitted
For more information about this error, try `rustc --explain E0570`.

View file

@ -1,6 +1,9 @@
// ignore-arm stdcall isn't supported
// ignore-aarch64 stdcall isn't supported
// ignore-riscv64 stdcall isn't supported
// needs-llvm-components: x86
// compile-flags: --target=i686-pc-windows-msvc --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
extern "stdcall" {
fn printf(_: *const u8, ...); //~ ERROR: variadic function must have C or cdecl calling

View file

@ -1,11 +1,11 @@
error[E0045]: C-variadic function must have C or cdecl calling convention
--> $DIR/variadic-ffi-1.rs:6:5
--> $DIR/variadic-ffi-1.rs:9:5
|
LL | fn printf(_: *const u8, ...);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C-variadics require C or cdecl calling convention
error[E0060]: this function takes at least 2 arguments but 0 arguments were supplied
--> $DIR/variadic-ffi-1.rs:17:9
--> $DIR/variadic-ffi-1.rs:20:9
|
LL | foo();
| ^^^-- supplied 0 arguments
@ -13,13 +13,13 @@ LL | foo();
| expected at least 2 arguments
|
note: function defined here
--> $DIR/variadic-ffi-1.rs:10:8
--> $DIR/variadic-ffi-1.rs:13:8
|
LL | fn foo(f: isize, x: u8, ...);
| ^^^
error[E0060]: this function takes at least 2 arguments but 1 argument was supplied
--> $DIR/variadic-ffi-1.rs:18:9
--> $DIR/variadic-ffi-1.rs:21:9
|
LL | foo(1);
| ^^^ - supplied 1 argument
@ -27,13 +27,13 @@ LL | foo(1);
| expected at least 2 arguments
|
note: function defined here
--> $DIR/variadic-ffi-1.rs:10:8
--> $DIR/variadic-ffi-1.rs:13:8
|
LL | fn foo(f: isize, x: u8, ...);
| ^^^
error[E0308]: mismatched types
--> $DIR/variadic-ffi-1.rs:20:56
--> $DIR/variadic-ffi-1.rs:23:56
|
LL | let x: unsafe extern "C" fn(f: isize, x: u8) = foo;
| ------------------------------------- ^^^ expected non-variadic fn, found variadic function
@ -44,7 +44,7 @@ LL | let x: unsafe extern "C" fn(f: isize, x: u8) = foo;
found fn item `unsafe extern "C" fn(_, _, ...) {foo}`
error[E0308]: mismatched types
--> $DIR/variadic-ffi-1.rs:21:54
--> $DIR/variadic-ffi-1.rs:24:54
|
LL | let y: extern "C" fn(f: isize, x: u8, ...) = bar;
| ----------------------------------- ^^^ expected variadic fn, found non-variadic function
@ -55,37 +55,37 @@ LL | let y: extern "C" fn(f: isize, x: u8, ...) = bar;
found fn item `extern "C" fn(_, _) {bar}`
error[E0617]: can't pass `f32` to variadic function
--> $DIR/variadic-ffi-1.rs:23:19
--> $DIR/variadic-ffi-1.rs:26:19
|
LL | foo(1, 2, 3f32);
| ^^^^ help: cast the value to `c_double`: `3f32 as c_double`
error[E0617]: can't pass `bool` to variadic function
--> $DIR/variadic-ffi-1.rs:24:19
--> $DIR/variadic-ffi-1.rs:27:19
|
LL | foo(1, 2, true);
| ^^^^ help: cast the value to `c_int`: `true as c_int`
error[E0617]: can't pass `i8` to variadic function
--> $DIR/variadic-ffi-1.rs:25:19
--> $DIR/variadic-ffi-1.rs:28:19
|
LL | foo(1, 2, 1i8);
| ^^^ help: cast the value to `c_int`: `1i8 as c_int`
error[E0617]: can't pass `u8` to variadic function
--> $DIR/variadic-ffi-1.rs:26:19
--> $DIR/variadic-ffi-1.rs:29:19
|
LL | foo(1, 2, 1u8);
| ^^^ help: cast the value to `c_uint`: `1u8 as c_uint`
error[E0617]: can't pass `i16` to variadic function
--> $DIR/variadic-ffi-1.rs:27:19
--> $DIR/variadic-ffi-1.rs:30:19
|
LL | foo(1, 2, 1i16);
| ^^^^ help: cast the value to `c_int`: `1i16 as c_int`
error[E0617]: can't pass `u16` to variadic function
--> $DIR/variadic-ffi-1.rs:28:19
--> $DIR/variadic-ffi-1.rs:31:19
|
LL | foo(1, 2, 1u16);
| ^^^^ help: cast the value to `c_uint`: `1u16 as c_uint`

View file

@ -1,7 +1,5 @@
// run-pass
// ignore-arm
// ignore-aarch64
// ignore-riscv64 fastcall isn't supported
// only-i686
trait A {
extern "fastcall" fn test1(i: i32);

View file

@ -1,7 +1,5 @@
// run-pass
// ignore-arm
// ignore-aarch64
// ignore-riscv64 thiscall isn't supported
// only-i686
#![feature(abi_thiscall)]

View file

@ -1,7 +1,7 @@
// run-pass
// ignore-arm
// ignore-aarch64
// ignore-riscv64 vectorcall isn't supported
// revisions: x64 x32
// [x64]only-x86_64
// [x32]only-i686
#![feature(abi_vectorcall)]

View file

@ -1,9 +1,51 @@
// needs-llvm-components: avr
// compile-flags: --target=avr-unknown-gnu-atmega328 --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
// Test that the AVR interrupt ABI cannot be used when avr_interrupt
// feature gate is not used.
extern "avr-interrupt" fn foo() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
extern "avr-non-blocking-interrupt" fn fu() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-interrupt" fn f() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
fn main() {
foo();
trait T {
extern "avr-interrupt" fn m();
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-non-blocking-interrupt" fn mu();
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-interrupt" fn dm() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-non-blocking-interrupt" fn dmu() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
}
struct S;
impl T for S {
extern "avr-interrupt" fn m() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-non-blocking-interrupt" fn mu() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
}
impl S {
extern "avr-interrupt" fn im() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-non-blocking-interrupt" fn imu() {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
}
type TA = extern "avr-interrupt" fn();
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
type TAU = extern "avr-non-blocking-interrupt" fn();
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-interrupt" {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental
extern "avr-non-blocking-interrupt" {}
//~^ ERROR avr-interrupt and avr-non-blocking-interrupt ABIs are experimental

View file

@ -1,12 +1,129 @@
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:4:8
--> $DIR/feature-gate-abi-avr-interrupt.rs:11:8
|
LL | extern "avr-interrupt" fn foo() {}
LL | extern "avr-non-blocking-interrupt" fn fu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:13:8
|
LL | extern "avr-interrupt" fn f() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error: aborting due to previous error
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:17:12
|
LL | extern "avr-interrupt" fn m();
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:19:12
|
LL | extern "avr-non-blocking-interrupt" fn mu();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:22:12
|
LL | extern "avr-interrupt" fn dm() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:24:12
|
LL | extern "avr-non-blocking-interrupt" fn dmu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:30:12
|
LL | extern "avr-interrupt" fn m() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:32:12
|
LL | extern "avr-non-blocking-interrupt" fn mu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:37:12
|
LL | extern "avr-interrupt" fn im() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:39:12
|
LL | extern "avr-non-blocking-interrupt" fn imu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:43:18
|
LL | type TA = extern "avr-interrupt" fn();
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:45:19
|
LL | type TAU = extern "avr-non-blocking-interrupt" fn();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:48:8
|
LL | extern "avr-interrupt" {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error[E0658]: avr-interrupt and avr-non-blocking-interrupt ABIs are experimental and subject to change
--> $DIR/feature-gate-abi-avr-interrupt.rs:50:8
|
LL | extern "avr-non-blocking-interrupt" {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #69664 <https://github.com/rust-lang/rust/issues/69664> for more information
= help: add `#![feature(abi_avr_interrupt)]` to the crate attributes to enable
error: aborting due to 14 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -1,11 +1,34 @@
// Test that the MSP430 interrupt ABI cannot be used when msp430_interrupt
// feature gate is not used.
// needs-llvm-components: msp430
// compile-flags: --target=msp430-none-elf --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
// ignore-riscv64 msp430 is not supported
extern "msp430-interrupt" fn f() {}
//~^ ERROR msp430-interrupt ABI is experimental
extern "msp430-interrupt" fn foo() {}
//~^ ERROR msp430-interrupt ABI is experimental and subject to change
trait T {
extern "msp430-interrupt" fn m();
//~^ ERROR msp430-interrupt ABI is experimental
fn main() {
foo();
extern "msp430-interrupt" fn dm() {}
//~^ ERROR msp430-interrupt ABI is experimental
}
struct S;
impl T for S {
extern "msp430-interrupt" fn m() {}
//~^ ERROR msp430-interrupt ABI is experimental
}
impl S {
extern "msp430-interrupt" fn im() {}
//~^ ERROR msp430-interrupt ABI is experimental
}
type TA = extern "msp430-interrupt" fn();
//~^ ERROR msp430-interrupt ABI is experimental
extern "msp430-interrupt" {}
//~^ ERROR msp430-interrupt ABI is experimental

View file

@ -1,12 +1,66 @@
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:6:8
--> $DIR/feature-gate-abi-msp430-interrupt.rs:8:8
|
LL | extern "msp430-interrupt" fn foo() {}
LL | extern "msp430-interrupt" fn f() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error: aborting due to previous error
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:12:12
|
LL | extern "msp430-interrupt" fn m();
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:15:12
|
LL | extern "msp430-interrupt" fn dm() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:21:12
|
LL | extern "msp430-interrupt" fn m() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:26:12
|
LL | extern "msp430-interrupt" fn im() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:30:18
|
LL | type TA = extern "msp430-interrupt" fn();
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-msp430-interrupt.rs:33:8
|
LL | extern "msp430-interrupt" {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error: aborting due to 7 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -0,0 +1,28 @@
// needs-llvm-components: x86
// compile-flags: --target=x86_64-unknown-linux-gnu --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
extern "x86-interrupt" fn f7() {} //~ ERROR x86-interrupt ABI is experimental
trait Tr {
extern "x86-interrupt" fn m7(); //~ ERROR x86-interrupt ABI is experimental
extern "x86-interrupt" fn dm7() {} //~ ERROR x86-interrupt ABI is experimental
}
struct S;
// Methods in trait impl
impl Tr for S {
extern "x86-interrupt" fn m7() {} //~ ERROR x86-interrupt ABI is experimental
}
// Methods in inherent impl
impl S {
extern "x86-interrupt" fn im7() {} //~ ERROR x86-interrupt ABI is experimental
}
type A7 = extern "x86-interrupt" fn(); //~ ERROR x86-interrupt ABI is experimental
extern "x86-interrupt" {} //~ ERROR x86-interrupt ABI is experimental

View file

@ -0,0 +1,66 @@
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:8:8
|
LL | extern "x86-interrupt" fn f7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:10:12
|
LL | extern "x86-interrupt" fn m7();
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:11:12
|
LL | extern "x86-interrupt" fn dm7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:18:12
|
LL | extern "x86-interrupt" fn m7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:23:12
|
LL | extern "x86-interrupt" fn im7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:26:18
|
LL | type A7 = extern "x86-interrupt" fn();
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi-x86-interrupt.rs:28:8
|
LL | extern "x86-interrupt" {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error: aborting due to 7 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -1,27 +1,21 @@
// only-x86_64
// gate-test-intrinsics
// gate-test-platform_intrinsics
// gate-test-abi_vectorcall
// gate-test-abi_thiscall
// gate-test-abi_ptx
// gate-test-abi_x86_interrupt
// gate-test-abi_amdgpu_kernel
// gate-test-abi_efiapi
// compile-flags: --crate-type=rlib
#![feature(no_core, lang_items)]
#![no_core]
#[lang="sized"]
trait Sized { }
// Functions
extern "rust-intrinsic" fn f1() {} //~ ERROR intrinsics are subject to change
//~^ ERROR intrinsic must be in
extern "platform-intrinsic" fn f2() {} //~ ERROR platform intrinsics are experimental
//~^ ERROR intrinsic must be in
extern "vectorcall" fn f3() {} //~ ERROR vectorcall is experimental and subject to change
extern "rust-call" fn f4(_: ()) {} //~ ERROR rust-call ABI is subject to change
extern "msp430-interrupt" fn f5() {} //~ ERROR msp430-interrupt ABI is experimental
extern "ptx-kernel" fn f6() {} //~ ERROR PTX ABIs are experimental and subject to change
extern "x86-interrupt" fn f7() {} //~ ERROR x86-interrupt ABI is experimental
extern "thiscall" fn f8() {} //~ ERROR thiscall is experimental and subject to change
extern "amdgpu-kernel" fn f9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
extern "efiapi" fn f10() {} //~ ERROR efiapi ABI is experimental and subject to change
extern "wasm" fn f11() {} //~ ERROR wasm ABI is experimental and subject to change
// Methods in trait definition
trait Tr {
@ -29,25 +23,11 @@ trait Tr {
//~^ ERROR intrinsic must be in
extern "platform-intrinsic" fn m2(); //~ ERROR platform intrinsics are experimental
//~^ ERROR intrinsic must be in
extern "vectorcall" fn m3(); //~ ERROR vectorcall is experimental and subject to change
extern "rust-call" fn m4(_: ()); //~ ERROR rust-call ABI is subject to change
extern "msp430-interrupt" fn m5(); //~ ERROR msp430-interrupt ABI is experimental
extern "ptx-kernel" fn m6(); //~ ERROR PTX ABIs are experimental and subject to change
extern "x86-interrupt" fn m7(); //~ ERROR x86-interrupt ABI is experimental
extern "thiscall" fn m8(); //~ ERROR thiscall is experimental and subject to change
extern "amdgpu-kernel" fn m9(); //~ ERROR amdgpu-kernel ABI is experimental and subject to change
extern "efiapi" fn m10(); //~ ERROR efiapi ABI is experimental and subject to change
extern "wasm" fn m11() {} //~ ERROR wasm ABI is experimental and subject to change
extern "vectorcall" fn dm3() {} //~ ERROR vectorcall is experimental and subject to change
extern "rust-call" fn dm4(_: ()) {} //~ ERROR rust-call ABI is subject to change
extern "msp430-interrupt" fn dm5() {} //~ ERROR msp430-interrupt ABI is experimental
extern "ptx-kernel" fn dm6() {} //~ ERROR PTX ABIs are experimental and subject to change
extern "x86-interrupt" fn dm7() {} //~ ERROR x86-interrupt ABI is experimental
extern "thiscall" fn dm8() {} //~ ERROR thiscall is experimental and subject to change
extern "amdgpu-kernel" fn dm9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
extern "efiapi" fn dm10() {} //~ ERROR efiapi ABI is experimental and subject to change
extern "wasm" fn dm11() {} //~ ERROR wasm ABI is experimental and subject to change
}
struct S;
@ -58,15 +38,8 @@ impl Tr for S {
//~^ ERROR intrinsic must be in
extern "platform-intrinsic" fn m2() {} //~ ERROR platform intrinsics are experimental
//~^ ERROR intrinsic must be in
extern "vectorcall" fn m3() {} //~ ERROR vectorcall is experimental and subject to change
extern "rust-call" fn m4(_: ()) {} //~ ERROR rust-call ABI is subject to change
extern "msp430-interrupt" fn m5() {} //~ ERROR msp430-interrupt ABI is experimental
extern "ptx-kernel" fn m6() {} //~ ERROR PTX ABIs are experimental and subject to change
extern "x86-interrupt" fn m7() {} //~ ERROR x86-interrupt ABI is experimental
extern "thiscall" fn m8() {} //~ ERROR thiscall is experimental and subject to change
extern "amdgpu-kernel" fn m9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
extern "efiapi" fn m10() {} //~ ERROR efiapi ABI is experimental and subject to change
extern "wasm" fn m11() {} //~ ERROR wasm ABI is experimental and subject to change
}
// Methods in inherent impl
@ -75,41 +48,18 @@ impl S {
//~^ ERROR intrinsic must be in
extern "platform-intrinsic" fn im2() {} //~ ERROR platform intrinsics are experimental
//~^ ERROR intrinsic must be in
extern "vectorcall" fn im3() {} //~ ERROR vectorcall is experimental and subject to change
extern "rust-call" fn im4(_: ()) {} //~ ERROR rust-call ABI is subject to change
extern "msp430-interrupt" fn im5() {} //~ ERROR msp430-interrupt ABI is experimental
extern "ptx-kernel" fn im6() {} //~ ERROR PTX ABIs are experimental and subject to change
extern "x86-interrupt" fn im7() {} //~ ERROR x86-interrupt ABI is experimental
extern "thiscall" fn im8() {} //~ ERROR thiscall is experimental and subject to change
extern "amdgpu-kernel" fn im9() {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
extern "efiapi" fn im10() {} //~ ERROR efiapi ABI is experimental and subject to change
extern "wasm" fn im11() {} //~ ERROR wasm ABI is experimental and subject to change
}
// Function pointer types
type A1 = extern "rust-intrinsic" fn(); //~ ERROR intrinsics are subject to change
type A2 = extern "platform-intrinsic" fn(); //~ ERROR platform intrinsics are experimental
type A3 = extern "vectorcall" fn(); //~ ERROR vectorcall is experimental and subject to change
type A4 = extern "rust-call" fn(_: ()); //~ ERROR rust-call ABI is subject to change
type A5 = extern "msp430-interrupt" fn(); //~ ERROR msp430-interrupt ABI is experimental
type A6 = extern "ptx-kernel" fn(); //~ ERROR PTX ABIs are experimental and subject to change
type A7 = extern "x86-interrupt" fn(); //~ ERROR x86-interrupt ABI is experimental
type A8 = extern "thiscall" fn(); //~ ERROR thiscall is experimental and subject to change
type A9 = extern "amdgpu-kernel" fn(); //~ ERROR amdgpu-kernel ABI is experimental and subject to change
type A10 = extern "efiapi" fn(); //~ ERROR efiapi ABI is experimental and subject to change
type A11 = extern "wasm" fn(); //~ ERROR wasm ABI is experimental and subject to change
// Foreign modules
extern "rust-intrinsic" {} //~ ERROR intrinsics are subject to change
extern "platform-intrinsic" {} //~ ERROR platform intrinsics are experimental
extern "vectorcall" {} //~ ERROR vectorcall is experimental and subject to change
extern "rust-call" {} //~ ERROR rust-call ABI is subject to change
extern "msp430-interrupt" {} //~ ERROR msp430-interrupt ABI is experimental
extern "ptx-kernel" {} //~ ERROR PTX ABIs are experimental and subject to change
extern "x86-interrupt" {} //~ ERROR x86-interrupt ABI is experimental
extern "thiscall" {} //~ ERROR thiscall is experimental and subject to change
extern "amdgpu-kernel" {} //~ ERROR amdgpu-kernel ABI is experimental and subject to change
extern "efiapi" {} //~ ERROR efiapi ABI is experimental and subject to change
extern "wasm" {} //~ ERROR wasm ABI is experimental and subject to change
fn main() {}

View file

@ -1,5 +1,5 @@
error[E0658]: intrinsics are subject to change
--> $DIR/feature-gate-abi.rs:12:8
--> $DIR/feature-gate-abi.rs:13:8
|
LL | extern "rust-intrinsic" fn f1() {}
| ^^^^^^^^^^^^^^^^
@ -7,7 +7,7 @@ LL | extern "rust-intrinsic" fn f1() {}
= help: add `#![feature(intrinsics)]` to the crate attributes to enable
error[E0658]: platform intrinsics are experimental and possibly buggy
--> $DIR/feature-gate-abi.rs:14:8
--> $DIR/feature-gate-abi.rs:15:8
|
LL | extern "platform-intrinsic" fn f2() {}
| ^^^^^^^^^^^^^^^^^^^^
@ -15,14 +15,6 @@ LL | extern "platform-intrinsic" fn f2() {}
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:16:8
|
LL | extern "vectorcall" fn f3() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:17:8
|
@ -32,52 +24,8 @@ LL | extern "rust-call" fn f4(_: ()) {}
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:18:8
|
LL | extern "msp430-interrupt" fn f5() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:19:8
|
LL | extern "ptx-kernel" fn f6() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:20:8
|
LL | extern "x86-interrupt" fn f7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:21:8
|
LL | extern "thiscall" fn f8() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:22:8
|
LL | extern "amdgpu-kernel" fn f9() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:23:8
--> $DIR/feature-gate-abi.rs:18:8
|
LL | extern "efiapi" fn f10() {}
| ^^^^^^^^
@ -85,17 +33,8 @@ LL | extern "efiapi" fn f10() {}
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:24:8
|
LL | extern "wasm" fn f11() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: intrinsics are subject to change
--> $DIR/feature-gate-abi.rs:28:12
--> $DIR/feature-gate-abi.rs:22:12
|
LL | extern "rust-intrinsic" fn m1();
| ^^^^^^^^^^^^^^^^
@ -103,7 +42,7 @@ LL | extern "rust-intrinsic" fn m1();
= help: add `#![feature(intrinsics)]` to the crate attributes to enable
error[E0658]: platform intrinsics are experimental and possibly buggy
--> $DIR/feature-gate-abi.rs:30:12
--> $DIR/feature-gate-abi.rs:24:12
|
LL | extern "platform-intrinsic" fn m2();
| ^^^^^^^^^^^^^^^^^^^^
@ -111,16 +50,8 @@ LL | extern "platform-intrinsic" fn m2();
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:32:12
|
LL | extern "vectorcall" fn m3();
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:33:12
--> $DIR/feature-gate-abi.rs:26:12
|
LL | extern "rust-call" fn m4(_: ());
| ^^^^^^^^^^^
@ -128,52 +59,8 @@ LL | extern "rust-call" fn m4(_: ());
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:34:12
|
LL | extern "msp430-interrupt" fn m5();
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:35:12
|
LL | extern "ptx-kernel" fn m6();
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:36:12
|
LL | extern "x86-interrupt" fn m7();
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:37:12
|
LL | extern "thiscall" fn m8();
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:38:12
|
LL | extern "amdgpu-kernel" fn m9();
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:39:12
--> $DIR/feature-gate-abi.rs:27:12
|
LL | extern "efiapi" fn m10();
| ^^^^^^^^
@ -181,25 +68,8 @@ LL | extern "efiapi" fn m10();
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:40:12
|
LL | extern "wasm" fn m11() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:42:12
|
LL | extern "vectorcall" fn dm3() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:43:12
--> $DIR/feature-gate-abi.rs:29:12
|
LL | extern "rust-call" fn dm4(_: ()) {}
| ^^^^^^^^^^^
@ -207,52 +77,8 @@ LL | extern "rust-call" fn dm4(_: ()) {}
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:44:12
|
LL | extern "msp430-interrupt" fn dm5() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:45:12
|
LL | extern "ptx-kernel" fn dm6() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:46:12
|
LL | extern "x86-interrupt" fn dm7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:47:12
|
LL | extern "thiscall" fn dm8() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:48:12
|
LL | extern "amdgpu-kernel" fn dm9() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:49:12
--> $DIR/feature-gate-abi.rs:30:12
|
LL | extern "efiapi" fn dm10() {}
| ^^^^^^^^
@ -260,17 +86,8 @@ LL | extern "efiapi" fn dm10() {}
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:50:12
|
LL | extern "wasm" fn dm11() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: intrinsics are subject to change
--> $DIR/feature-gate-abi.rs:57:12
--> $DIR/feature-gate-abi.rs:37:12
|
LL | extern "rust-intrinsic" fn m1() {}
| ^^^^^^^^^^^^^^^^
@ -278,7 +95,7 @@ LL | extern "rust-intrinsic" fn m1() {}
= help: add `#![feature(intrinsics)]` to the crate attributes to enable
error[E0658]: platform intrinsics are experimental and possibly buggy
--> $DIR/feature-gate-abi.rs:59:12
--> $DIR/feature-gate-abi.rs:39:12
|
LL | extern "platform-intrinsic" fn m2() {}
| ^^^^^^^^^^^^^^^^^^^^
@ -286,16 +103,8 @@ LL | extern "platform-intrinsic" fn m2() {}
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:61:12
|
LL | extern "vectorcall" fn m3() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:62:12
--> $DIR/feature-gate-abi.rs:41:12
|
LL | extern "rust-call" fn m4(_: ()) {}
| ^^^^^^^^^^^
@ -303,52 +112,8 @@ LL | extern "rust-call" fn m4(_: ()) {}
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:63:12
|
LL | extern "msp430-interrupt" fn m5() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:64:12
|
LL | extern "ptx-kernel" fn m6() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:65:12
|
LL | extern "x86-interrupt" fn m7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:66:12
|
LL | extern "thiscall" fn m8() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:67:12
|
LL | extern "amdgpu-kernel" fn m9() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:68:12
--> $DIR/feature-gate-abi.rs:42:12
|
LL | extern "efiapi" fn m10() {}
| ^^^^^^^^
@ -356,17 +121,8 @@ LL | extern "efiapi" fn m10() {}
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:69:12
|
LL | extern "wasm" fn m11() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: intrinsics are subject to change
--> $DIR/feature-gate-abi.rs:74:12
--> $DIR/feature-gate-abi.rs:47:12
|
LL | extern "rust-intrinsic" fn im1() {}
| ^^^^^^^^^^^^^^^^
@ -374,7 +130,7 @@ LL | extern "rust-intrinsic" fn im1() {}
= help: add `#![feature(intrinsics)]` to the crate attributes to enable
error[E0658]: platform intrinsics are experimental and possibly buggy
--> $DIR/feature-gate-abi.rs:76:12
--> $DIR/feature-gate-abi.rs:49:12
|
LL | extern "platform-intrinsic" fn im2() {}
| ^^^^^^^^^^^^^^^^^^^^
@ -382,16 +138,8 @@ LL | extern "platform-intrinsic" fn im2() {}
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:78:12
|
LL | extern "vectorcall" fn im3() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:79:12
--> $DIR/feature-gate-abi.rs:51:12
|
LL | extern "rust-call" fn im4(_: ()) {}
| ^^^^^^^^^^^
@ -399,52 +147,8 @@ LL | extern "rust-call" fn im4(_: ()) {}
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:80:12
|
LL | extern "msp430-interrupt" fn im5() {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:81:12
|
LL | extern "ptx-kernel" fn im6() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:82:12
|
LL | extern "x86-interrupt" fn im7() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:83:12
|
LL | extern "thiscall" fn im8() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:84:12
|
LL | extern "amdgpu-kernel" fn im9() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:85:12
--> $DIR/feature-gate-abi.rs:52:12
|
LL | extern "efiapi" fn im10() {}
| ^^^^^^^^
@ -452,17 +156,8 @@ LL | extern "efiapi" fn im10() {}
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:86:12
|
LL | extern "wasm" fn im11() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: intrinsics are subject to change
--> $DIR/feature-gate-abi.rs:90:18
--> $DIR/feature-gate-abi.rs:56:18
|
LL | type A1 = extern "rust-intrinsic" fn();
| ^^^^^^^^^^^^^^^^
@ -470,7 +165,7 @@ LL | type A1 = extern "rust-intrinsic" fn();
= help: add `#![feature(intrinsics)]` to the crate attributes to enable
error[E0658]: platform intrinsics are experimental and possibly buggy
--> $DIR/feature-gate-abi.rs:91:18
--> $DIR/feature-gate-abi.rs:57:18
|
LL | type A2 = extern "platform-intrinsic" fn();
| ^^^^^^^^^^^^^^^^^^^^
@ -478,16 +173,8 @@ LL | type A2 = extern "platform-intrinsic" fn();
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:92:18
|
LL | type A3 = extern "vectorcall" fn();
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:93:18
--> $DIR/feature-gate-abi.rs:58:18
|
LL | type A4 = extern "rust-call" fn(_: ());
| ^^^^^^^^^^^
@ -495,52 +182,8 @@ LL | type A4 = extern "rust-call" fn(_: ());
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:94:18
|
LL | type A5 = extern "msp430-interrupt" fn();
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:95:18
|
LL | type A6 = extern "ptx-kernel" fn();
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:96:18
|
LL | type A7 = extern "x86-interrupt" fn();
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:97:18
|
LL | type A8 = extern "thiscall" fn();
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:98:18
|
LL | type A9 = extern "amdgpu-kernel" fn();
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:99:19
--> $DIR/feature-gate-abi.rs:59:19
|
LL | type A10 = extern "efiapi" fn();
| ^^^^^^^^
@ -548,17 +191,8 @@ LL | type A10 = extern "efiapi" fn();
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:100:19
|
LL | type A11 = extern "wasm" fn();
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: intrinsics are subject to change
--> $DIR/feature-gate-abi.rs:103:8
--> $DIR/feature-gate-abi.rs:62:8
|
LL | extern "rust-intrinsic" {}
| ^^^^^^^^^^^^^^^^
@ -566,7 +200,7 @@ LL | extern "rust-intrinsic" {}
= help: add `#![feature(intrinsics)]` to the crate attributes to enable
error[E0658]: platform intrinsics are experimental and possibly buggy
--> $DIR/feature-gate-abi.rs:104:8
--> $DIR/feature-gate-abi.rs:63:8
|
LL | extern "platform-intrinsic" {}
| ^^^^^^^^^^^^^^^^^^^^
@ -574,16 +208,8 @@ LL | extern "platform-intrinsic" {}
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:105:8
|
LL | extern "vectorcall" {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: rust-call ABI is subject to change
--> $DIR/feature-gate-abi.rs:106:8
--> $DIR/feature-gate-abi.rs:64:8
|
LL | extern "rust-call" {}
| ^^^^^^^^^^^
@ -591,52 +217,8 @@ LL | extern "rust-call" {}
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
error[E0658]: msp430-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:107:8
|
LL | extern "msp430-interrupt" {}
| ^^^^^^^^^^^^^^^^^^
|
= note: see issue #38487 <https://github.com/rust-lang/rust/issues/38487> for more information
= help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi.rs:108:8
|
LL | extern "ptx-kernel" {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: x86-interrupt ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:109:8
|
LL | extern "x86-interrupt" {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #40180 <https://github.com/rust-lang/rust/issues/40180> for more information
= help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-abi.rs:110:8
|
LL | extern "thiscall" {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:111:8
|
LL | extern "amdgpu-kernel" {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: efiapi ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:112:8
--> $DIR/feature-gate-abi.rs:65:8
|
LL | extern "efiapi" {}
| ^^^^^^^^
@ -644,63 +226,54 @@ LL | extern "efiapi" {}
= note: see issue #65815 <https://github.com/rust-lang/rust/issues/65815> for more information
= help: add `#![feature(abi_efiapi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-abi.rs:113:8
|
LL | extern "wasm" {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:28:32
--> $DIR/feature-gate-abi.rs:22:32
|
LL | extern "rust-intrinsic" fn m1();
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:30:36
--> $DIR/feature-gate-abi.rs:24:36
|
LL | extern "platform-intrinsic" fn m2();
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:12:33
--> $DIR/feature-gate-abi.rs:13:33
|
LL | extern "rust-intrinsic" fn f1() {}
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:14:37
--> $DIR/feature-gate-abi.rs:15:37
|
LL | extern "platform-intrinsic" fn f2() {}
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:57:37
--> $DIR/feature-gate-abi.rs:37:37
|
LL | extern "rust-intrinsic" fn m1() {}
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:59:41
--> $DIR/feature-gate-abi.rs:39:41
|
LL | extern "platform-intrinsic" fn m2() {}
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:74:38
--> $DIR/feature-gate-abi.rs:47:38
|
LL | extern "rust-intrinsic" fn im1() {}
| ^^
error: intrinsic must be in `extern "rust-intrinsic" { ... }` block
--> $DIR/feature-gate-abi.rs:76:42
--> $DIR/feature-gate-abi.rs:49:42
|
LL | extern "platform-intrinsic" fn im2() {}
| ^^
error: aborting due to 83 previous errors
error: aborting due to 34 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -0,0 +1,30 @@
// compile-flags: --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
extern "amdgpu-kernel" fn fu() {} //~ ERROR amdgpu-kernel ABI is experimental
//~^ ERROR is not a supported ABI
trait T {
extern "amdgpu-kernel" fn mu(); //~ ERROR amdgpu-kernel ABI is experimental
extern "amdgpu-kernel" fn dmu() {} //~ ERROR amdgpu-kernel ABI is experimental
//~^ ERROR is not a supported ABI
}
struct S;
impl T for S {
extern "amdgpu-kernel" fn mu() {} //~ ERROR amdgpu-kernel ABI is experimental
//~^ ERROR is not a supported ABI
}
impl S {
extern "amdgpu-kernel" fn imu() {} //~ ERROR amdgpu-kernel ABI is experimental
//~^ ERROR is not a supported ABI
}
type TAU = extern "amdgpu-kernel" fn(); //~ ERROR amdgpu-kernel ABI is experimental
extern "amdgpu-kernel" {} //~ ERROR amdgpu-kernel ABI is experimental
//~^ ERROR is not a supported ABI

View file

@ -0,0 +1,97 @@
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:7:8
|
LL | extern "amdgpu-kernel" fn fu() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:11:12
|
LL | extern "amdgpu-kernel" fn mu();
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:12:12
|
LL | extern "amdgpu-kernel" fn dmu() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:18:12
|
LL | extern "amdgpu-kernel" fn mu() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:23:12
|
LL | extern "amdgpu-kernel" fn imu() {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:27:19
|
LL | type TAU = extern "amdgpu-kernel" fn();
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0658]: amdgpu-kernel ABI is experimental and subject to change
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:29:8
|
LL | extern "amdgpu-kernel" {}
| ^^^^^^^^^^^^^^^
|
= note: see issue #51575 <https://github.com/rust-lang/rust/issues/51575> for more information
= help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:29:1
|
LL | extern "amdgpu-kernel" {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:7:1
|
LL | extern "amdgpu-kernel" fn fu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:12:5
|
LL | extern "amdgpu-kernel" fn dmu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:18:5
|
LL | extern "amdgpu-kernel" fn mu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0570]: `"amdgpu-kernel"` is not a supported ABI for the current target
--> $DIR/feature-gate-abi_amdgpu_kernel.rs:23:5
|
LL | extern "amdgpu-kernel" fn imu() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 12 previous errors
Some errors have detailed explanations: E0570, E0658.
For more information about an error, try `rustc --explain E0570`.

View file

@ -0,0 +1,26 @@
// needs-llvm-components: nvptx
// compile-flags: --target=nvptx64-nvidia-cuda --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
extern "ptx-kernel" fn fu() {} //~ ERROR PTX ABIs are experimental
trait T {
extern "ptx-kernel" fn mu(); //~ ERROR PTX ABIs are experimental
extern "ptx-kernel" fn dmu() {} //~ ERROR PTX ABIs are experimental
}
struct S;
impl T for S {
extern "ptx-kernel" fn mu() {} //~ ERROR PTX ABIs are experimental
}
impl S {
extern "ptx-kernel" fn imu() {} //~ ERROR PTX ABIs are experimental
}
type TAU = extern "ptx-kernel" fn(); //~ ERROR PTX ABIs are experimental
extern "ptx-kernel" {} //~ ERROR PTX ABIs are experimental

View file

@ -0,0 +1,66 @@
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:8:8
|
LL | extern "ptx-kernel" fn fu() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:11:12
|
LL | extern "ptx-kernel" fn mu();
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:12:12
|
LL | extern "ptx-kernel" fn dmu() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:17:12
|
LL | extern "ptx-kernel" fn mu() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:21:12
|
LL | extern "ptx-kernel" fn imu() {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:24:19
|
LL | type TAU = extern "ptx-kernel" fn();
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error[E0658]: PTX ABIs are experimental and subject to change
--> $DIR/feature-gate-abi_ptx.rs:26:8
|
LL | extern "ptx-kernel" {}
| ^^^^^^^^^^^^
|
= note: see issue #38788 <https://github.com/rust-lang/rust/issues/38788> for more information
= help: add `#![feature(abi_ptx)]` to the crate attributes to enable
error: aborting due to 7 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -0,0 +1,31 @@
// gate-test-abi_vectorcall
// needs-llvm-components: x86
// compile-flags: --target=i686-pc-windows-msvc --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
// Test that the "vectorcall-unwind" ABI is feature-gated, and cannot be used when
// the `c_unwind` feature gate is not used.
extern "vectorcall" fn f() {} //~ ERROR vectorcall is experimental
trait T {
extern "vectorcall" fn m(); //~ ERROR vectorcall is experimental
extern "vectorcall" fn dm() {} //~ ERROR vectorcall is experimental
}
struct S;
impl T for S {
extern "vectorcall" fn m() {} //~ ERROR vectorcall is experimental
}
impl S {
extern "vectorcall" fn im() {} //~ ERROR vectorcall is experimental
}
type TA = extern "vectorcall" fn(); //~ ERROR vectorcall is experimental
extern "vectorcall" {} //~ ERROR vectorcall is experimental

View file

@ -0,0 +1,59 @@
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:12:8
|
LL | extern "vectorcall" fn f() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:15:12
|
LL | extern "vectorcall" fn m();
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:17:12
|
LL | extern "vectorcall" fn dm() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:22:12
|
LL | extern "vectorcall" fn m() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:26:12
|
LL | extern "vectorcall" fn im() {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:29:18
|
LL | type TA = extern "vectorcall" fn();
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error[E0658]: vectorcall is experimental and subject to change
--> $DIR/feature-gate-vectorcall.rs:31:8
|
LL | extern "vectorcall" {}
| ^^^^^^^^^^^^
|
= help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable
error: aborting due to 7 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -1,7 +1,26 @@
extern "wasm" fn foo() {
//~^ ERROR: wasm ABI is experimental and subject to change
// needs-llvm-components: webassembly
// compile-flags: --target=wasm32-unknown-unknown --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
extern "wasm" fn fu() {} //~ ERROR wasm ABI is experimental
trait T {
extern "wasm" fn mu(); //~ ERROR wasm ABI is experimental
extern "wasm" fn dmu() {} //~ ERROR wasm ABI is experimental
}
fn main() {
foo();
struct S;
impl T for S {
extern "wasm" fn mu() {} //~ ERROR wasm ABI is experimental
}
impl S {
extern "wasm" fn imu() {} //~ ERROR wasm ABI is experimental
}
type TAU = extern "wasm" fn(); //~ ERROR wasm ABI is experimental
extern "wasm" {} //~ ERROR wasm ABI is experimental

View file

@ -1,12 +1,66 @@
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:1:8
--> $DIR/feature-gate-wasm_abi.rs:8:8
|
LL | extern "wasm" fn foo() {
LL | extern "wasm" fn fu() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error: aborting due to previous error
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:11:12
|
LL | extern "wasm" fn mu();
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:12:12
|
LL | extern "wasm" fn dmu() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:17:12
|
LL | extern "wasm" fn mu() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:21:12
|
LL | extern "wasm" fn imu() {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:24:19
|
LL | type TAU = extern "wasm" fn();
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error[E0658]: wasm ABI is experimental and subject to change
--> $DIR/feature-gate-wasm_abi.rs:26:8
|
LL | extern "wasm" {}
| ^^^^^^
|
= note: see issue #83788 <https://github.com/rust-lang/rust/issues/83788> for more information
= help: add `#![feature(wasm_abi)]` to the crate attributes to enable
error: aborting due to 7 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -1,13 +1,30 @@
// ignore-arm stdcall isn't supported
// ignore-aarch64 stdcall isn't supported
// ignore-riscv64 stdcall isn't supported
// gate-test-c_unwind
// needs-llvm-components: x86
// compile-flags: --target=i686-pc-windows-msvc --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
// Test that the "stdcall-unwind" ABI is feature-gated, and cannot be used when
// the `c_unwind` feature gate is not used.
extern "stdcall-unwind" fn f() {}
//~^ ERROR stdcall-unwind ABI is experimental and subject to change [E0658]
extern "stdcall-unwind" fn fu() {} //~ ERROR stdcall-unwind ABI is experimental
fn main() {
f();
trait T {
extern "stdcall-unwind" fn mu(); //~ ERROR stdcall-unwind ABI is experimental
extern "stdcall-unwind" fn dmu() {} //~ ERROR stdcall-unwind ABI is experimental
}
struct S;
impl T for S {
extern "stdcall-unwind" fn mu() {} //~ ERROR stdcall-unwind ABI is experimental
}
impl S {
extern "stdcall-unwind" fn imu() {} //~ ERROR stdcall-unwind ABI is experimental
}
type TAU = extern "stdcall-unwind" fn(); //~ ERROR stdcall-unwind ABI is experimental
extern "stdcall-unwind" {} //~ ERROR stdcall-unwind ABI is experimental

View file

@ -1,12 +1,66 @@
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:8:8
--> $DIR/feature-gate-stdcall-unwind.rs:12:8
|
LL | extern "stdcall-unwind" fn f() {}
LL | extern "stdcall-unwind" fn fu() {}
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error: aborting due to previous error
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:15:12
|
LL | extern "stdcall-unwind" fn mu();
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:16:12
|
LL | extern "stdcall-unwind" fn dmu() {}
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:21:12
|
LL | extern "stdcall-unwind" fn mu() {}
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:25:12
|
LL | extern "stdcall-unwind" fn imu() {}
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:28:19
|
LL | type TAU = extern "stdcall-unwind" fn();
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: stdcall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-stdcall-unwind.rs:30:8
|
LL | extern "stdcall-unwind" {}
| ^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error: aborting due to 7 previous errors
For more information about this error, try `rustc --explain E0658`.

View file

@ -1,13 +1,39 @@
// ignore-arm thiscall isn't supported
// ignore-aarch64 thiscall isn't supported
// ignore-riscv64 thiscall isn't supported
// gate-test-abi_thiscall
// gate-test-c_unwind
// needs-llvm-components: x86
// compile-flags: --target=i686-pc-windows-msvc --crate-type=rlib
#![no_core]
#![feature(no_core, lang_items)]
#[lang="sized"]
trait Sized { }
// Test that the "thiscall-unwind" ABI is feature-gated, and cannot be used when
// the `c_unwind` feature gate is not used.
extern "thiscall-unwind" fn f() {}
//~^ ERROR thiscall-unwind ABI is experimental and subject to change [E0658]
extern "thiscall-unwind" fn fu() {} //~ ERROR thiscall-unwind ABI is experimental
extern "thiscall" fn f() {} //~ ERROR thiscall is experimental
fn main() {
f();
trait T {
extern "thiscall" fn m(); //~ ERROR thiscall is experimental
extern "thiscall-unwind" fn mu(); //~ ERROR thiscall-unwind ABI is experimental
extern "thiscall" fn dm() {} //~ ERROR thiscall is experimental
extern "thiscall-unwind" fn dmu() {} //~ ERROR thiscall-unwind ABI is experimental
}
struct S;
impl T for S {
extern "thiscall" fn m() {} //~ ERROR thiscall is experimental
extern "thiscall-unwind" fn mu() {} //~ ERROR thiscall-unwind ABI is experimental
}
impl S {
extern "thiscall" fn im() {} //~ ERROR thiscall is experimental
extern "thiscall-unwind" fn imu() {} //~ ERROR thiscall-unwind ABI is experimental
}
type TA = extern "thiscall" fn(); //~ ERROR thiscall is experimental
type TAU = extern "thiscall-unwind" fn(); //~ ERROR thiscall-unwind ABI is experimental
extern "thiscall" {} //~ ERROR thiscall is experimental
extern "thiscall-unwind" {} //~ ERROR thiscall-unwind ABI is experimental

View file

@ -1,12 +1,122 @@
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:8:8
--> $DIR/feature-gate-thiscall-unwind.rs:13:8
|
LL | extern "thiscall-unwind" fn f() {}
LL | extern "thiscall-unwind" fn fu() {}
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error: aborting due to previous error
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:14:8
|
LL | extern "thiscall" fn f() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:17:12
|
LL | extern "thiscall" fn m();
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:18:12
|
LL | extern "thiscall-unwind" fn mu();
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:20:12
|
LL | extern "thiscall" fn dm() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:21:12
|
LL | extern "thiscall-unwind" fn dmu() {}
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:26:12
|
LL | extern "thiscall" fn m() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:27:12
|
LL | extern "thiscall-unwind" fn mu() {}
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:31:12
|
LL | extern "thiscall" fn im() {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:32:12
|
LL | extern "thiscall-unwind" fn imu() {}
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:35:18
|
LL | type TA = extern "thiscall" fn();
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:36:19
|
LL | type TAU = extern "thiscall-unwind" fn();
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error[E0658]: thiscall is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:38:8
|
LL | extern "thiscall" {}
| ^^^^^^^^^^
|
= help: add `#![feature(abi_thiscall)]` to the crate attributes to enable
error[E0658]: thiscall-unwind ABI is experimental and subject to change
--> $DIR/feature-gate-thiscall-unwind.rs:39:8
|
LL | extern "thiscall-unwind" {}
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #74990 <https://github.com/rust-lang/rust/issues/74990> for more information
= help: add `#![feature(c_unwind)]` to the crate attributes to enable
error: aborting due to 14 previous errors
For more information about this error, try `rustc --explain E0658`.