rust-lang/rust · #162909
Destabilize `VaArgSafe`
library/core/src/ffi/va_list.rs13 + / 13 −
@@ -308,7 +308,7 @@ const impl<'f> Drop for VaList<'f> { // types with a non-scalar layout. Inline assembly can be used to accept unsupported types in the // meantime. #[lang = "va_arg_safe"]-#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] #[rustc_dyn_incompatible_trait] pub impl(self) unsafe trait VaArgSafe {} @@ -318,9 +318,9 @@ crate::cfg_select! { // // - i8 is implicitly promoted to c_int in C, and cannot implement `VaArgSafe`. // - u8 is implicitly promoted to c_uint in C, and cannot implement `VaArgSafe`.- #[stable(feature = "c_variadic", since = "1.99.0")]+ #[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for i16 {}- #[stable(feature = "c_variadic", since = "1.99.0")]+ #[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for u16 {} } _ => {@@ -334,7 +334,7 @@ crate::cfg_select! { crate::cfg_select! { target_arch = "avr" => { // c_double is f32 on this target.- #[stable(feature = "c_variadic", since = "1.99.0")]+ #[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for f32 {} } _ => {@@ -344,18 +344,18 @@ crate::cfg_select! { } } -#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for i32 {}-#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for i64 {}-#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for isize {} -#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for u32 {}-#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for u64 {}-#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for usize {} // Implement `VaArgSafe` for 128-bit integers on targets where clang provides `__int128`.@@ -413,12 +413,12 @@ cfg_select! { } } -#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl VaArgSafe for f64 {} -#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl<T> VaArgSafe for *mut T {}-#[stable(feature = "c_variadic", since = "1.99.0")]+#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")] unsafe impl<T> VaArgSafe for *const T {} // Check that relevant `core::ffi` types implement `VaArgSafe`.library/std/src/ffi/mod.rs4 + / 2 −
@@ -164,10 +164,12 @@ #[stable(feature = "c_str_module", since = "1.88.0")] pub mod c_str; +#[unstable(feature = "c_variadic_va_arg_safe", issue = "162911", implied_by = "c_variadic")]+pub use core::ffi::VaArgSafe;+#[stable(feature = "c_variadic", since = "1.99.0")]+pub use core::ffi::VaList; #[stable(feature = "core_c_void", since = "1.30.0")] pub use core::ffi::c_void;-#[stable(feature = "c_variadic", since = "1.99.0")]-pub use core::ffi::{VaArgSafe, VaList}; #[stable(feature = "core_ffi_c", since = "1.64.0")] pub use core::ffi::{ c_char, c_double, c_float, c_int, c_long, c_longlong, c_schar, c_short, c_uchar, c_uint,src/bootstrap/stdlib-semver-check-stamp1 + / 1 −
@@ -2,4 +2,4 @@ Change this file to explicitly acknowledge making a breaking change to the Rust If this file is modified in the same PR as the breaking change, then CI will not fail due to the breaking change being detected by cargo-semver-checks. -Last change is for: https://github.com/rust-lang/rust/pull/162374+Last change is for: https://github.com/rust-lang/rust/pull/162909tests/ui/c-variadic/roundtrip.rs7 + / 1 −
@@ -1,6 +1,12 @@ //@ run-pass //@ ignore-backends: gcc-#![feature(const_c_variadic, c_variadic_int128, const_destruct, const_raw_ptr_comparison)]+#![feature(+ const_c_variadic,+ c_variadic_va_arg_safe,+ c_variadic_int128,+ const_destruct,+ const_raw_ptr_comparison+)] #![allow(unused_features)] // c_variadic_int128 is only used on 64-bit targets. use std::ffi::*;tests/ui/consts/const-eval/c-variadic-fail.rs1 + / 1 −
@@ -1,5 +1,5 @@ //@ build-fail-+#![feature(c_variadic_va_arg_safe)] #![feature(const_c_variadic)] #![feature(const_trait_impl)] #![feature(const_destruct)]