diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2025-08-03 21:57:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-03 21:57:02 +0200 |
| commit | 018c172b2283c470a07139f1e798e6777c357ff8 (patch) | |
| tree | f06d1fcc974438c3a44226f31e5c0577fb859a4c /tests/ui/explicit-tail-calls | |
| parent | d0d648d7641eb9e8bd3851f2822993032933bf16 (diff) | |
| parent | c539890ae68b5e0584ffdae2559e3e606da37657 (diff) | |
| download | rust-018c172b2283c470a07139f1e798e6777c357ff8.tar.gz rust-018c172b2283c470a07139f1e798e6777c357ff8.zip | |
Rollup merge of #144851 - WaffleLapkin:instrinsic-deny, r=compiler-errors,scottmcm
Forbid tail calling intrinsics There is only one intrinsic that can be called on stable, as far as I can find, (`transmute`). And in general tail calling intrinsics doesn't make much sense. Alternative to rust-lang/rust#144815 (and thus closes rust-lang/rust#144815) Fixes https://github.com/rust-lang/rust/issues/144806 r? ``@scottmcm``
Diffstat (limited to 'tests/ui/explicit-tail-calls')
| -rw-r--r-- | tests/ui/explicit-tail-calls/intrinsics.rs | 13 | ||||
| -rw-r--r-- | tests/ui/explicit-tail-calls/intrinsics.stderr | 14 |
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/ui/explicit-tail-calls/intrinsics.rs b/tests/ui/explicit-tail-calls/intrinsics.rs new file mode 100644 index 00000000000..6fc521fa27d --- /dev/null +++ b/tests/ui/explicit-tail-calls/intrinsics.rs @@ -0,0 +1,13 @@ +#![feature(explicit_tail_calls, core_intrinsics)] +#![expect(incomplete_features, internal_features)] + +fn trans((): ()) { + unsafe { become std::mem::transmute(()) } //~ error: tail calling intrinsics is not allowed + +} + +fn cats(x: u64) -> u32 { + become std::intrinsics::ctlz(x) //~ error: tail calling intrinsics is not allowed +} + +fn main() {} diff --git a/tests/ui/explicit-tail-calls/intrinsics.stderr b/tests/ui/explicit-tail-calls/intrinsics.stderr new file mode 100644 index 00000000000..b012e3629dd --- /dev/null +++ b/tests/ui/explicit-tail-calls/intrinsics.stderr @@ -0,0 +1,14 @@ +error: tail calling intrinsics is not allowed + --> $DIR/intrinsics.rs:5:14 + | +LL | unsafe { become std::mem::transmute(()) } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: tail calling intrinsics is not allowed + --> $DIR/intrinsics.rs:10:5 + | +LL | become std::intrinsics::ctlz(x) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 2 previous errors + |
