Auto merge of #62376 - Mark-Simulacrum:1.38-nightly, r=alexcrichton
Switch master to 1.38
This commit is contained in:
commit
baab1914ec
@ -13,7 +13,7 @@ use build_helper::output;
|
||||
use crate::Build;
|
||||
|
||||
// The version number
|
||||
pub const CFG_RELEASE_NUM: &str = "1.37.0";
|
||||
pub const CFG_RELEASE_NUM: &str = "1.38.0";
|
||||
|
||||
pub struct GitInfo {
|
||||
inner: Option<Info>,
|
||||
|
@ -15,8 +15,7 @@ extern "Rust" {
|
||||
// them from the `#[global_allocator]` attribute if there is one, or uses the
|
||||
// default implementations in libstd (`__rdl_alloc` etc in `src/libstd/alloc.rs`)
|
||||
// otherwise.
|
||||
#[cfg_attr(bootstrap, allocator)]
|
||||
#[cfg_attr(not(bootstrap), rustc_allocator)]
|
||||
#[rustc_allocator]
|
||||
#[rustc_allocator_nounwind]
|
||||
fn __rust_alloc(size: usize, align: usize) -> *mut u8;
|
||||
#[rustc_allocator_nounwind]
|
||||
|
@ -79,7 +79,6 @@
|
||||
#![feature(coerce_unsized)]
|
||||
#![feature(dispatch_from_dyn)]
|
||||
#![feature(core_intrinsics)]
|
||||
#![cfg_attr(bootstrap, feature(custom_attribute))]
|
||||
#![feature(dropck_eyepatch)]
|
||||
#![feature(exact_size_is_empty)]
|
||||
#![feature(fmt_internals)]
|
||||
|
@ -302,7 +302,6 @@ impl<T> sealed_trait::VaArgSafe for *const T {}
|
||||
reason = "the `c_variadic` feature has not been properly tested on \
|
||||
all supported platforms",
|
||||
issue = "44930")]
|
||||
#[cfg(not(bootstrap))]
|
||||
impl<'f> VaListImpl<'f> {
|
||||
/// Advance to the next arg.
|
||||
#[inline]
|
||||
@ -324,7 +323,6 @@ impl<'f> VaListImpl<'f> {
|
||||
reason = "the `c_variadic` feature has not been properly tested on \
|
||||
all supported platforms",
|
||||
issue = "44930")]
|
||||
#[cfg(not(bootstrap))]
|
||||
impl<'f> Clone for VaListImpl<'f> {
|
||||
#[inline]
|
||||
fn clone(&self) -> Self {
|
||||
@ -340,7 +338,6 @@ impl<'f> Clone for VaListImpl<'f> {
|
||||
reason = "the `c_variadic` feature has not been properly tested on \
|
||||
all supported platforms",
|
||||
issue = "44930")]
|
||||
#[cfg(not(bootstrap))]
|
||||
impl<'f> Drop for VaListImpl<'f> {
|
||||
fn drop(&mut self) {
|
||||
// FIXME: this should call `va_end`, but there's no clean way to
|
||||
@ -359,15 +356,12 @@ impl<'f> Drop for VaListImpl<'f> {
|
||||
extern "rust-intrinsic" {
|
||||
/// Destroy the arglist `ap` after initialization with `va_start` or
|
||||
/// `va_copy`.
|
||||
#[cfg(not(bootstrap))]
|
||||
fn va_end(ap: &mut VaListImpl<'_>);
|
||||
|
||||
/// Copies the current location of arglist `src` to the arglist `dst`.
|
||||
#[cfg(not(bootstrap))]
|
||||
fn va_copy<'f>(dest: *mut VaListImpl<'f>, src: &VaListImpl<'f>);
|
||||
|
||||
/// Loads an argument of type `T` from the `va_list` `ap` and increment the
|
||||
/// argument `ap` points to.
|
||||
#[cfg(not(bootstrap))]
|
||||
fn va_arg<T: sealed_trait::VaArgSafe>(ap: &mut VaListImpl<'_>) -> T;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ use crate::task::{Context, Poll};
|
||||
#[doc(spotlight)]
|
||||
#[must_use = "futures do nothing unless you `.await` or poll them"]
|
||||
#[stable(feature = "futures_api", since = "1.36.0")]
|
||||
#[cfg_attr(not(bootstrap), lang = "future_trait")]
|
||||
#[lang = "future_trait"]
|
||||
pub trait Future {
|
||||
/// The type of value produced on completion.
|
||||
#[stable(feature = "futures_api", since = "1.36.0")]
|
||||
|
@ -1052,16 +1052,12 @@ extern "rust-intrinsic" {
|
||||
pub fn fabsf64(x: f64) -> f64;
|
||||
|
||||
/// Returns the minimum of two `f32` values.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn minnumf32(x: f32, y: f32) -> f32;
|
||||
/// Returns the minimum of two `f64` values.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn minnumf64(x: f64, y: f64) -> f64;
|
||||
/// Returns the maximum of two `f32` values.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn maxnumf32(x: f32, y: f32) -> f32;
|
||||
/// Returns the maximum of two `f64` values.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn maxnumf64(x: f64, y: f64) -> f64;
|
||||
|
||||
/// Copies the sign from `y` to `x` for `f32` values.
|
||||
@ -1255,17 +1251,14 @@ extern "rust-intrinsic" {
|
||||
|
||||
/// Returns the result of an unchecked addition, resulting in
|
||||
/// undefined behavior when `x + y > T::max_value()` or `x + y < T::min_value()`.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn unchecked_add<T>(x: T, y: T) -> T;
|
||||
|
||||
/// Returns the result of an unchecked substraction, resulting in
|
||||
/// undefined behavior when `x - y > T::max_value()` or `x - y < T::min_value()`.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn unchecked_sub<T>(x: T, y: T) -> T;
|
||||
|
||||
/// Returns the result of an unchecked multiplication, resulting in
|
||||
/// undefined behavior when `x * y > T::max_value()` or `x * y < T::min_value()`.
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn unchecked_mul<T>(x: T, y: T) -> T;
|
||||
|
||||
/// Performs rotate left.
|
||||
@ -1563,53 +1556,3 @@ pub unsafe fn write_bytes<T>(dst: *mut T, val: u8, count: usize) {
|
||||
}
|
||||
write_bytes(dst, val, count)
|
||||
}
|
||||
|
||||
// Simple bootstrap implementations of minnum/maxnum for stage0 compilation.
|
||||
|
||||
/// Returns the minimum of two `f32` values.
|
||||
#[cfg(bootstrap)]
|
||||
pub fn minnumf32(x: f32, y: f32) -> f32 {
|
||||
// IEEE754 says: minNum(x, y) is the canonicalized number x if x < y, y if y < x, the
|
||||
// canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
|
||||
// is either x or y, canonicalized (this means results might differ among implementations).
|
||||
// When either x or y is a signaling NaN, then the result is according to 6.2.
|
||||
//
|
||||
// Since we do not support sNaN in Rust yet, we do not need to handle them.
|
||||
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
|
||||
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
|
||||
(if x < y || y != y { x } else { y }) * 1.0
|
||||
}
|
||||
|
||||
/// Returns the minimum of two `f64` values.
|
||||
#[cfg(bootstrap)]
|
||||
pub fn minnumf64(x: f64, y: f64) -> f64 {
|
||||
// Identical to the `f32` case.
|
||||
(if x < y || y != y { x } else { y }) * 1.0
|
||||
}
|
||||
|
||||
/// Returns the maximum of two `f32` values.
|
||||
#[cfg(bootstrap)]
|
||||
pub fn maxnumf32(x: f32, y: f32) -> f32 {
|
||||
// IEEE754 says: maxNum(x, y) is the canonicalized number y if x < y, x if y < x, the
|
||||
// canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
|
||||
// is either x or y, canonicalized (this means results might differ among implementations).
|
||||
// When either x or y is a signaling NaN, then the result is according to 6.2.
|
||||
//
|
||||
// Since we do not support sNaN in Rust yet, we do not need to handle them.
|
||||
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
|
||||
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
|
||||
(if x < y || x != x { y } else { x }) * 1.0
|
||||
}
|
||||
|
||||
/// Returns the maximum of two `f64` values.
|
||||
#[cfg(bootstrap)]
|
||||
pub fn maxnumf64(x: f64, y: f64) -> f64 {
|
||||
// Identical to the `f32` case.
|
||||
(if x < y || x != x { y } else { x }) * 1.0
|
||||
}
|
||||
|
||||
/// For bootstrapping, implement unchecked_sub as just wrapping_sub.
|
||||
#[cfg(bootstrap)]
|
||||
pub unsafe fn unchecked_sub<T>(x: T, y: T) -> T {
|
||||
sub_with_overflow(x, y).0
|
||||
}
|
||||
|
@ -99,7 +99,7 @@
|
||||
#![feature(staged_api)]
|
||||
#![feature(std_internals)]
|
||||
#![feature(stmt_expr_attributes)]
|
||||
#![cfg_attr(not(bootstrap), feature(transparent_unions))]
|
||||
#![feature(transparent_unions)]
|
||||
#![feature(unboxed_closures)]
|
||||
#![feature(unsized_locals)]
|
||||
#![feature(untagged_unions)]
|
||||
|
@ -207,7 +207,7 @@ use crate::mem::ManuallyDrop;
|
||||
#[allow(missing_debug_implementations)]
|
||||
#[stable(feature = "maybe_uninit", since = "1.36.0")]
|
||||
#[derive(Copy)]
|
||||
#[cfg_attr(not(bootstrap), repr(transparent))]
|
||||
#[repr(transparent)]
|
||||
pub union MaybeUninit<T> {
|
||||
uninit: (),
|
||||
value: ManuallyDrop<T>,
|
||||
|
@ -50,7 +50,7 @@ assert_eq!(size_of::<Option<core::num::", stringify!($Ty), ">>(), size_of::<", s
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
||||
#[repr(transparent)]
|
||||
#[rustc_layout_scalar_valid_range_start(1)]
|
||||
#[cfg_attr(not(bootstrap), rustc_nonnull_optimization_guaranteed)]
|
||||
#[rustc_nonnull_optimization_guaranteed]
|
||||
pub struct $Ty($Int);
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ use crate::cmp::Ordering;
|
||||
#[stable(feature = "nonnull", since = "1.25.0")]
|
||||
#[repr(transparent)]
|
||||
#[rustc_layout_scalar_valid_range_start(1)]
|
||||
#[cfg_attr(not(bootstrap), rustc_nonnull_optimization_guaranteed)]
|
||||
#[rustc_nonnull_optimization_guaranteed]
|
||||
pub struct NonNull<T: ?Sized> {
|
||||
pointer: *const T,
|
||||
}
|
||||
|
@ -170,6 +170,7 @@ impl CodegenCx<'ll, 'tcx> {
|
||||
pub fn const_get_real(&self, v: &'ll Value) -> Option<(f64, bool)> {
|
||||
unsafe {
|
||||
if self.is_const_real(v) {
|
||||
#[allow(deprecated)]
|
||||
let mut loses_info: llvm::Bool = ::std::mem::uninitialized();
|
||||
let r = llvm::LLVMConstRealGetDouble(v, &mut loses_info);
|
||||
let loses_info = if loses_info == 1 { true } else { false };
|
||||
|
@ -1,7 +1,6 @@
|
||||
/// A simple static assertion macro.
|
||||
#[macro_export]
|
||||
#[cfg_attr(bootstrap, allow_internal_unstable(type_ascription, underscore_const_names))]
|
||||
#[cfg_attr(not(bootstrap), allow_internal_unstable(type_ascription))]
|
||||
#[allow_internal_unstable(type_ascription)]
|
||||
macro_rules! static_assert {
|
||||
($test:expr) => {
|
||||
// Use the bool to access an array such that if the bool is false, the access
|
||||
@ -13,7 +12,6 @@ macro_rules! static_assert {
|
||||
|
||||
/// Type size assertion. The first argument is a type and the second argument is its expected size.
|
||||
#[macro_export]
|
||||
#[cfg_attr(bootstrap, allow_internal_unstable(underscore_const_names))]
|
||||
macro_rules! static_assert_size {
|
||||
($ty:ty, $size:expr) => {
|
||||
const _: [(); $size] = [(); ::std::mem::size_of::<$ty>()];
|
||||
|
@ -7,7 +7,6 @@
|
||||
#![feature(mem_take)]
|
||||
#![feature(nll)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![cfg_attr(bootstrap, feature(type_alias_enum_variants))]
|
||||
|
||||
#![recursion_limit="256"]
|
||||
|
||||
|
@ -44,6 +44,7 @@ pub fn copy<R: ?Sized, W: ?Sized>(reader: &mut R, writer: &mut W) -> io::Result<
|
||||
where R: Read, W: Write
|
||||
{
|
||||
let mut buf = unsafe {
|
||||
#[allow(deprecated)]
|
||||
let mut buf: [u8; super::DEFAULT_BUF_SIZE] = mem::uninitialized();
|
||||
reader.initializer().initialize(&mut buf);
|
||||
buf
|
||||
|
@ -1,3 +1,5 @@
|
||||
#![allow(deprecated)] // mem::uninitialized
|
||||
|
||||
use crate::io::ErrorKind;
|
||||
use crate::mem;
|
||||
|
||||
|
@ -3,6 +3,8 @@
|
||||
//! This module contains the facade (aka platform-specific) implementations of
|
||||
//! OS level functionality for Fortanix SGX.
|
||||
|
||||
#![allow(deprecated)]
|
||||
|
||||
use crate::io::ErrorKind;
|
||||
use crate::os::raw::c_char;
|
||||
use crate::sync::atomic::{AtomicBool, Ordering};
|
||||
|
@ -59,17 +59,6 @@ where
|
||||
TokenStream: Send + Sync,
|
||||
{}
|
||||
|
||||
// These are safe since we ensure that they hold for all fields in the `_dummy` function.
|
||||
//
|
||||
// These impls are only here because the compiler takes forever to compute the Send and Sync
|
||||
// bounds without them.
|
||||
// FIXME: Remove these impls when the compiler can compute the bounds quickly again.
|
||||
// See https://github.com/rust-lang/rust/issues/60846
|
||||
#[cfg(all(bootstrap, parallel_compiler))]
|
||||
unsafe impl Send for TokenTree {}
|
||||
#[cfg(all(bootstrap, parallel_compiler))]
|
||||
unsafe impl Sync for TokenTree {}
|
||||
|
||||
impl TokenTree {
|
||||
/// Use this token tree as a matcher to parse given tts.
|
||||
pub fn parse(cx: &base::ExtCtxt<'_>, mtch: &[quoted::TokenTree], tts: TokenStream)
|
||||
|
@ -108,6 +108,7 @@ impl<T: Write + Send + 'static> WinConsole<T> {
|
||||
let fg;
|
||||
let bg;
|
||||
unsafe {
|
||||
#[allow(deprecated)]
|
||||
let mut buffer_info = ::std::mem::uninitialized();
|
||||
if GetConsoleScreenBufferInfo(GetStdHandle(-11i32 as DWORD), &mut buffer_info) != 0 {
|
||||
fg = bits_to_color(buffer_info.wAttributes);
|
||||
|
@ -4,13 +4,11 @@ fn main() {
|
||||
println!("cargo:rerun-if-changed=build.rs");
|
||||
let target = env::var("TARGET").expect("TARGET was not set");
|
||||
|
||||
// FIXME: the not(bootstrap) part is needed because of the issue addressed by #62286,
|
||||
// and could be removed once that change is in beta.
|
||||
if cfg!(all(not(bootstrap), feature = "llvm-libunwind")) &&
|
||||
if cfg!(feature = "llvm-libunwind") &&
|
||||
(target.contains("linux") ||
|
||||
target.contains("fuchsia")) {
|
||||
// Build the unwinding from libunwind C/C++ source code.
|
||||
#[cfg(all(not(bootstrap), feature = "llvm-libunwind"))]
|
||||
#[cfg(feature = "llvm-libunwind")]
|
||||
llvm_libunwind::compile();
|
||||
} else if target.contains("linux") {
|
||||
if target.contains("musl") {
|
||||
@ -44,7 +42,7 @@ fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(not(bootstrap), feature = "llvm-libunwind"))]
|
||||
#[cfg(feature = "llvm-libunwind")]
|
||||
mod llvm_libunwind {
|
||||
use std::env;
|
||||
use std::path::Path;
|
||||
|
@ -67,7 +67,7 @@ pub enum _Unwind_Context {}
|
||||
|
||||
pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code,
|
||||
exception: *mut _Unwind_Exception);
|
||||
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"),
|
||||
#[cfg_attr(feature = "llvm-libunwind",
|
||||
link(name = "unwind", kind = "static"))]
|
||||
extern "C" {
|
||||
#[unwind(allowed)]
|
||||
@ -93,7 +93,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
|
||||
}
|
||||
pub use _Unwind_Action::*;
|
||||
|
||||
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"),
|
||||
#[cfg_attr(feature = "llvm-libunwind",
|
||||
link(name = "unwind", kind = "static"))]
|
||||
extern "C" {
|
||||
pub fn _Unwind_GetGR(ctx: *mut _Unwind_Context, reg_index: c_int) -> _Unwind_Word;
|
||||
@ -148,7 +148,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
|
||||
pub const UNWIND_POINTER_REG: c_int = 12;
|
||||
pub const UNWIND_IP_REG: c_int = 15;
|
||||
|
||||
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"),
|
||||
#[cfg_attr(feature = "llvm-libunwind",
|
||||
link(name = "unwind", kind = "static"))]
|
||||
extern "C" {
|
||||
fn _Unwind_VRS_Get(ctx: *mut _Unwind_Context,
|
||||
@ -212,7 +212,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
|
||||
// Not 32-bit iOS
|
||||
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"),
|
||||
#[cfg_attr(feature = "llvm-libunwind",
|
||||
link(name = "unwind", kind = "static"))]
|
||||
extern "C" {
|
||||
#[unwind(allowed)]
|
||||
@ -223,7 +223,7 @@ if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
|
||||
}
|
||||
} else {
|
||||
// 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
|
||||
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"),
|
||||
#[cfg_attr(feature = "llvm-libunwind",
|
||||
link(name = "unwind", kind = "static"))]
|
||||
extern "C" {
|
||||
#[unwind(allowed)]
|
||||
|
@ -12,7 +12,7 @@
|
||||
# source tarball for a stable release you'll likely see `1.x.0` for rustc and
|
||||
# `0.x.0` for Cargo where they were released on `date`.
|
||||
|
||||
date: 2019-05-23
|
||||
date: 2019-07-04
|
||||
rustc: beta
|
||||
cargo: beta
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
use std::mem;
|
||||
|
||||
fn main() {
|
||||
#[allow(deprecated)]
|
||||
let xs: [u8; 4] = unsafe { mem::uninitialized() };
|
||||
let y = xs[0] + xs[1];
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
fn main() {
|
||||
// Check that the tail statement in the body unifies with something
|
||||
for _ in 0..3 {
|
||||
#[allow(deprecated)]
|
||||
unsafe { std::mem::uninitialized() }
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ trait FromUnchecked {
|
||||
|
||||
impl FromUnchecked for [u8; 1] {
|
||||
unsafe fn from_unchecked() {
|
||||
#[allow(deprecated)]
|
||||
let mut array: Self = std::mem::uninitialized();
|
||||
let _ptr = &mut array as *mut [u8] as *mut u8;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
// in a runtime panic.
|
||||
|
||||
#![feature(never_type)]
|
||||
#![allow(deprecated)]
|
||||
|
||||
use std::{mem, panic};
|
||||
|
||||
|
@ -49,6 +49,7 @@ fn main() {
|
||||
#[allow(unconditional_recursion)]
|
||||
fn recurse(array: &[u64]) {
|
||||
unsafe { black_box(array.as_ptr() as u64); }
|
||||
#[allow(deprecated)]
|
||||
let local: [_; 1024] = unsafe { mem::uninitialized() };
|
||||
recurse(&local);
|
||||
}
|
||||
|
@ -69,6 +69,7 @@ fn main() {
|
||||
unsafe {
|
||||
// This should be safe, because we don't match on it unless it's fully formed,
|
||||
// and it doesn't have a destructor.
|
||||
#[allow(deprecated)]
|
||||
let mut dest: MyEnum = mem::uninitialized();
|
||||
while buf.len() > 0 {
|
||||
match parse_my_enum(&mut dest, &mut buf) {
|
||||
|
@ -69,6 +69,7 @@ fn main() {
|
||||
unsafe {
|
||||
// This should be safe, because we don't match on it unless it's fully formed,
|
||||
// and it doesn't have a destructor.
|
||||
#[allow(deprecated)]
|
||||
let mut dest: MyEnum = mem::uninitialized();
|
||||
while buf.len() > 0 {
|
||||
match parse_my_enum(&mut dest, &mut buf) {
|
||||
|
@ -65,6 +65,7 @@ fn main() {
|
||||
unsafe {
|
||||
// This should be safe, because we don't match on it unless it's fully formed,
|
||||
// and it doesn't have a destructor.
|
||||
#[allow(deprecated)]
|
||||
let mut dest: MyEnum = mem::uninitialized();
|
||||
while buf.len() > 0 {
|
||||
match parse_my_enum(&mut dest, &mut buf) {
|
||||
|
@ -7,6 +7,7 @@ use std::mem;
|
||||
#[derive(Clone)]
|
||||
struct Foo;
|
||||
|
||||
#[allow(deprecated)]
|
||||
pub fn main() {
|
||||
unsafe {
|
||||
let _x: Foo = mem::uninitialized();
|
||||
|
@ -105,6 +105,7 @@ impl<U: Unsigned, B: Bit> Add<B0> for UInt<U, B> {
|
||||
impl<U: Unsigned> Add<U> for UTerm {
|
||||
type Output = U;
|
||||
fn add(self, _: U) -> Self::Output {
|
||||
#[allow(deprecated)]
|
||||
unsafe { ::std::mem::uninitialized() }
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ use std::mem;
|
||||
|
||||
fn foo<const SIZE: usize>() {
|
||||
let arr: [u8; SIZE] = unsafe {
|
||||
#[allow(deprecated)]
|
||||
let mut array: [u8; SIZE] = mem::uninitialized();
|
||||
array
|
||||
};
|
||||
|
@ -1,6 +1,7 @@
|
||||
// This note is annotated because the purpose of the test
|
||||
// is to ensure that certain other notes are not generated.
|
||||
#![deny(unused_unsafe)] //~ NOTE
|
||||
#![allow(deprecated)]
|
||||
|
||||
// (test that no note is generated on this unsafe fn)
|
||||
pub unsafe fn a() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: unnecessary `unsafe` block
|
||||
--> $DIR/issue-48131.rs:8:9
|
||||
--> $DIR/issue-48131.rs:9:9
|
||||
|
|
||||
LL | unsafe { /* unnecessary */ }
|
||||
| ^^^^^^ unnecessary `unsafe` block
|
||||
@ -11,7 +11,7 @@ LL | #![deny(unused_unsafe)]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: unnecessary `unsafe` block
|
||||
--> $DIR/issue-48131.rs:19:13
|
||||
--> $DIR/issue-48131.rs:20:13
|
||||
|
|
||||
LL | unsafe { /* unnecessary */ }
|
||||
| ^^^^^^ unnecessary `unsafe` block
|
||||
|
@ -1,3 +1,5 @@
|
||||
#![allow(deprecated)]
|
||||
|
||||
enum Void {}
|
||||
|
||||
fn main() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0004]: non-exhaustive patterns: `Err(_)` not covered
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:5:19
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:7:19
|
||||
|
|
||||
LL | let _ = match x {
|
||||
| ^ pattern `Err(_)` not covered
|
||||
@ -7,7 +7,7 @@ LL | let _ = match x {
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
|
||||
error[E0004]: non-exhaustive patterns: type `&Void` is non-empty
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:10:19
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:12:19
|
||||
|
|
||||
LL | let _ = match x {};
|
||||
| ^
|
||||
@ -15,7 +15,7 @@ LL | let _ = match x {};
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
|
||||
error[E0004]: non-exhaustive patterns: type `(Void,)` is non-empty
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:13:19
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:15:19
|
||||
|
|
||||
LL | let _ = match x {};
|
||||
| ^
|
||||
@ -23,7 +23,7 @@ LL | let _ = match x {};
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
|
||||
error[E0004]: non-exhaustive patterns: type `[Void; 1]` is non-empty
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:16:19
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:18:19
|
||||
|
|
||||
LL | let _ = match x {};
|
||||
| ^
|
||||
@ -31,7 +31,7 @@ LL | let _ = match x {};
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
|
||||
error[E0004]: non-exhaustive patterns: `&[_]` not covered
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:19:19
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:21:19
|
||||
|
|
||||
LL | let _ = match x {
|
||||
| ^ pattern `&[_]` not covered
|
||||
@ -39,7 +39,7 @@ LL | let _ = match x {
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
|
||||
error[E0004]: non-exhaustive patterns: `Err(_)` not covered
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:27:19
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:29:19
|
||||
|
|
||||
LL | let _ = match x {
|
||||
| ^ pattern `Err(_)` not covered
|
||||
@ -47,7 +47,7 @@ LL | let _ = match x {
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
|
||||
error[E0005]: refutable pattern in local binding: `Err(_)` not covered
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:32:9
|
||||
--> $DIR/uninhabited-matches-feature-gated.rs:34:9
|
||||
|
|
||||
LL | let Ok(x) = x;
|
||||
| ^^^^^ pattern `Err(_)` not covered
|
||||
|
Loading…
x
Reference in New Issue
Block a user