about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2020-06-03 15:15:53 -0400
committerMark Rousskov <mark.simulacrum@gmail.com>2020-06-03 15:27:51 -0400
commit71393422495b8d3c7a6e4ded3e64adaec45dca6d (patch)
tree570760bdbfd5143a9cdb6f2735c984dddaf9c4d4
parent6f4888845674837fd4b55adb66d9322e1973d7db (diff)
downloadrust-71393422495b8d3c7a6e4ded3e64adaec45dca6d.tar.gz
rust-71393422495b8d3c7a6e4ded3e64adaec45dca6d.zip
Bump to 1.46
-rw-r--r--src/bootstrap/channel.rs2
-rw-r--r--src/liballoc/rc.rs12
-rw-r--r--src/liballoc/sync.rs17
-rw-r--r--src/libcore/intrinsics.rs5
-rw-r--r--src/libcore/marker.rs14
-rw-r--r--src/libcore/ops/try.rs2
-rw-r--r--src/libcore/panicking.rs21
-rw-r--r--src/libpanic_unwind/seh.rs5
-rw-r--r--src/libstd/panicking.rs20
-rw-r--r--src/libstd/sync/mpsc/shared.rs6
-rw-r--r--src/libstd/sync/mpsc/sync.rs6
-rw-r--r--src/libstd/sys/cloudabi/mod.rs5
-rw-r--r--src/libstd/sys/windows/mod.rs5
-rw-r--r--src/stage0.txt2
-rw-r--r--src/tools/clippy/clippy_lints/src/write.rs8
15 files changed, 25 insertions, 105 deletions
diff --git a/src/bootstrap/channel.rs b/src/bootstrap/channel.rs
index f9d3b454246..a4115904ac7 100644
--- a/src/bootstrap/channel.rs
+++ b/src/bootstrap/channel.rs
@@ -13,7 +13,7 @@ use build_helper::output;
 use crate::Build;
 
 // The version number
-pub const CFG_RELEASE_NUM: &str = "1.45.0";
+pub const CFG_RELEASE_NUM: &str = "1.46.0";
 
 pub struct GitInfo {
     inner: Option<Info>,
diff --git a/src/liballoc/rc.rs b/src/liballoc/rc.rs
index 4edbc2ff3ac..925bc7d3c02 100644
--- a/src/liballoc/rc.rs
+++ b/src/liballoc/rc.rs
@@ -2035,11 +2035,7 @@ trait RcBoxPtr<T: ?Sized> {
         // nevertheless, we insert an abort here to hint LLVM at
         // an otherwise missed optimization.
         if strong == 0 || strong == usize::max_value() {
-            // remove `unsafe` on bootstrap bump
-            #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-            unsafe {
-                abort();
-            }
+            abort();
         }
         self.inner().strong.set(strong + 1);
     }
@@ -2063,11 +2059,7 @@ trait RcBoxPtr<T: ?Sized> {
         // nevertheless, we insert an abort here to hint LLVM at
         // an otherwise missed optimization.
         if weak == 0 || weak == usize::max_value() {
-            // remove `unsafe` on bootstrap bump
-            #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-            unsafe {
-                abort();
-            }
+            abort();
         }
         self.inner().weak.set(weak + 1);
     }
diff --git a/src/liballoc/sync.rs b/src/liballoc/sync.rs
index 5de3cac9d53..cd4172d6a2d 100644
--- a/src/liballoc/sync.rs
+++ b/src/liballoc/sync.rs
@@ -1093,11 +1093,7 @@ impl<T: ?Sized> Clone for Arc<T> {
         // We abort because such a program is incredibly degenerate, and we
         // don't care to support it.
         if old_size > MAX_REFCOUNT {
-            // remove `unsafe` on bootstrap bump
-            #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-            unsafe {
-                abort();
-            }
+            abort();
         }
 
         Self::from_inner(self.ptr)
@@ -1616,11 +1612,7 @@ impl<T: ?Sized> Weak<T> {
 
             // See comments in `Arc::clone` for why we do this (for `mem::forget`).
             if n > MAX_REFCOUNT {
-                // remove `unsafe` on bootstrap bump
-                #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-                unsafe {
-                    abort();
-                }
+                abort();
             }
 
             // Relaxed is valid for the same reason it is on Arc's Clone impl
@@ -1767,10 +1759,7 @@ impl<T: ?Sized> Clone for Weak<T> {
 
         // See comments in Arc::clone() for why we do this (for mem::forget).
         if old_size > MAX_REFCOUNT {
-            #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-            unsafe {
-                abort();
-            }
+            abort();
         }
 
         Weak { ptr: self.ptr }
diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs
index 2d97fecf8a7..85076a573b5 100644
--- a/src/libcore/intrinsics.rs
+++ b/src/libcore/intrinsics.rs
@@ -54,7 +54,6 @@
 )]
 #![allow(missing_docs)]
 
-#[cfg(not(bootstrap))]
 use crate::marker::DiscriminantKind;
 use crate::mem;
 
@@ -1916,11 +1915,7 @@ extern "rust-intrinsic" {
     /// The stabilized version of this intrinsic is
     /// [`std::mem::discriminant`](../../std/mem/fn.discriminant.html)
     #[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
-    #[cfg(not(bootstrap))]
     pub fn discriminant_value<T>(v: &T) -> <T as DiscriminantKind>::Discriminant;
-    #[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
-    #[cfg(bootstrap)]
-    pub fn discriminant_value<T>(v: &T) -> u64;
 
     /// Rust's "try catch" construct which invokes the function pointer `try_fn`
     /// with the data pointer `data`.
diff --git a/src/libcore/marker.rs b/src/libcore/marker.rs
index c0c0f66aff9..6040dd31847 100644
--- a/src/libcore/marker.rs
+++ b/src/libcore/marker.rs
@@ -692,25 +692,13 @@ mod impls {
     issue = "none",
     reason = "this trait is unlikely to ever be stabilized, use `mem::discriminant` instead"
 )]
-#[cfg_attr(not(bootstrap), lang = "discriminant_kind")]
+#[lang = "discriminant_kind"]
 pub trait DiscriminantKind {
     /// The type of the dicriminant, which must satisfy the trait
     /// bounds required by `mem::Discriminant`.
     type Discriminant: Clone + Copy + Debug + Eq + PartialEq + Hash + Send + Sync + Unpin;
 }
 
-// Manually implement `DiscriminantKind` for all types during bootstrap
-// to reduce the required amount of conditional compilation.
-#[unstable(
-    feature = "discriminant_kind",
-    issue = "none",
-    reason = "this trait is unlikely to ever be stabilized, use `mem::discriminant` instead"
-)]
-#[cfg(bootstrap)]
-impl<T: ?Sized> DiscriminantKind for T {
-    type Discriminant = u64;
-}
-
 /// Compiler-internal trait used to determine whether a type contains
 /// any `UnsafeCell` internally, but not through an indirection.
 /// This affects, for example, whether a `static` of that type is
diff --git a/src/libcore/ops/try.rs b/src/libcore/ops/try.rs
index e15ea11569f..9bc35ae1f5c 100644
--- a/src/libcore/ops/try.rs
+++ b/src/libcore/ops/try.rs
@@ -25,7 +25,7 @@
     )
 )]
 #[doc(alias = "?")]
-#[cfg_attr(not(bootstrap), lang = "try")]
+#[lang = "try"]
 pub trait Try {
     /// The type of this value when viewed as successful.
     #[unstable(feature = "try_trait", issue = "42327")]
diff --git a/src/libcore/panicking.rs b/src/libcore/panicking.rs
index 16739b4a1af..3ed5e65e11c 100644
--- a/src/libcore/panicking.rs
+++ b/src/libcore/panicking.rs
@@ -39,12 +39,7 @@ use crate::panic::{Location, PanicInfo};
 #[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators
 pub fn panic(expr: &str) -> ! {
     if cfg!(feature = "panic_immediate_abort") {
-        // remove `unsafe` (and safety comment) on bootstrap bump
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-        // SAFETY: the `abort` intrinsic has no requirements to be called.
-        unsafe {
-            super::intrinsics::abort()
-        }
+        super::intrinsics::abort()
     }
 
     // Use Arguments::new_v1 instead of format_args!("{}", expr) to potentially
@@ -62,12 +57,7 @@ pub fn panic(expr: &str) -> ! {
 #[lang = "panic_bounds_check"] // needed by codegen for panic on OOB array/slice access
 fn panic_bounds_check(index: usize, len: usize) -> ! {
     if cfg!(feature = "panic_immediate_abort") {
-        // remove `unsafe` (and safety comment) on bootstrap bump
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-        // SAFETY: the `abort` intrinsic has no requirements to be called.
-        unsafe {
-            super::intrinsics::abort()
-        }
+        super::intrinsics::abort()
     }
 
     panic!("index out of bounds: the len is {} but the index is {}", len, index)
@@ -80,12 +70,7 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
 #[track_caller]
 pub fn panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
     if cfg!(feature = "panic_immediate_abort") {
-        // remove `unsafe` (and safety comment) on bootstrap bump
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-        // SAFETY: the `abort` intrinsic has no requirements to be called.
-        unsafe {
-            super::intrinsics::abort()
-        }
+        super::intrinsics::abort()
     }
 
     // NOTE This function never crosses the FFI boundary; it's a Rust-to-Rust call
diff --git a/src/libpanic_unwind/seh.rs b/src/libpanic_unwind/seh.rs
index b1e87a7cac2..1f812f8df61 100644
--- a/src/libpanic_unwind/seh.rs
+++ b/src/libpanic_unwind/seh.rs
@@ -327,8 +327,5 @@ pub unsafe fn cleanup(payload: *mut u8) -> Box<dyn Any + Send> {
 #[lang = "eh_personality"]
 #[cfg(not(test))]
 fn rust_eh_personality() {
-    #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-    unsafe {
-        core::intrinsics::abort()
-    }
+    core::intrinsics::abort()
 }
diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs
index bf381896a22..6a120f930ab 100644
--- a/src/libstd/panicking.rs
+++ b/src/libstd/panicking.rs
@@ -332,10 +332,7 @@ pub fn panicking() -> bool {
 #[cfg_attr(feature = "panic_immediate_abort", inline)]
 pub fn begin_panic_fmt(msg: &fmt::Arguments<'_>) -> ! {
     if cfg!(feature = "panic_immediate_abort") {
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-        unsafe {
-            intrinsics::abort()
-        }
+        intrinsics::abort()
     }
 
     let info = PanicInfo::internal_constructor(Some(msg), Location::caller());
@@ -401,10 +398,7 @@ pub fn begin_panic_handler(info: &PanicInfo<'_>) -> ! {
 #[track_caller]
 pub fn begin_panic<M: Any + Send>(msg: M) -> ! {
     if cfg!(feature = "panic_immediate_abort") {
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-        unsafe {
-            intrinsics::abort()
-        }
+        intrinsics::abort()
     }
 
     rust_panic_with_hook(&mut PanicPayload::new(msg), None, Location::caller());
@@ -464,10 +458,7 @@ fn rust_panic_with_hook(
             "thread panicked while processing \
                                        panic. aborting.\n"
         ));
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-        unsafe {
-            intrinsics::abort()
-        }
+        intrinsics::abort()
     }
 
     unsafe {
@@ -502,10 +493,7 @@ fn rust_panic_with_hook(
             "thread panicked while panicking. \
                                        aborting.\n"
         ));
-        #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-        unsafe {
-            intrinsics::abort()
-        }
+        intrinsics::abort()
     }
 
     rust_panic(payload)
diff --git a/src/libstd/sync/mpsc/shared.rs b/src/libstd/sync/mpsc/shared.rs
index d1a46c51757..898654f21f2 100644
--- a/src/libstd/sync/mpsc/shared.rs
+++ b/src/libstd/sync/mpsc/shared.rs
@@ -354,11 +354,7 @@ impl<T> Packet<T> {
 
         // See comments on Arc::clone() on why we do this (for `mem::forget`).
         if old_count > MAX_REFCOUNT {
-            // remove `unsafe` on bootstrap bump
-            #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-            unsafe {
-                abort();
-            }
+            abort();
         }
     }
 
diff --git a/src/libstd/sync/mpsc/sync.rs b/src/libstd/sync/mpsc/sync.rs
index 603764922c5..733761671a0 100644
--- a/src/libstd/sync/mpsc/sync.rs
+++ b/src/libstd/sync/mpsc/sync.rs
@@ -358,11 +358,7 @@ impl<T> Packet<T> {
 
         // See comments on Arc::clone() on why we do this (for `mem::forget`).
         if old_count > MAX_REFCOUNT {
-            // remove `unsafe` on bootstrap bump
-            #[cfg_attr(not(bootstrap), allow(unused_unsafe))]
-            unsafe {
-                abort();
-            }
+            abort();
         }
     }
 
diff --git a/src/libstd/sys/cloudabi/mod.rs b/src/libstd/sys/cloudabi/mod.rs
index dde2b21c9bc..8dbc31472d6 100644
--- a/src/libstd/sys/cloudabi/mod.rs
+++ b/src/libstd/sys/cloudabi/mod.rs
@@ -52,10 +52,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
 }
 
 pub fn abort_internal() -> ! {
-    #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-    unsafe {
-        core::intrinsics::abort();
-    }
+    core::intrinsics::abort();
 }
 
 pub use libc::strlen;
diff --git a/src/libstd/sys/windows/mod.rs b/src/libstd/sys/windows/mod.rs
index 4098c6b3ee9..69877e68ba8 100644
--- a/src/libstd/sys/windows/mod.rs
+++ b/src/libstd/sys/windows/mod.rs
@@ -314,8 +314,5 @@ pub fn abort_internal() -> ! {
         llvm_asm!("int $$0x29" :: "{ecx}"(7) ::: volatile); // 7 is FAST_FAIL_FATAL_APP_EXIT
         crate::intrinsics::unreachable();
     }
-    #[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
-    unsafe {
-        crate::intrinsics::abort();
-    }
+    crate::intrinsics::abort();
 }
diff --git a/src/stage0.txt b/src/stage0.txt
index 150d7a0943d..5e840b9db19 100644
--- a/src/stage0.txt
+++ b/src/stage0.txt
@@ -12,7 +12,7 @@
 # source tarball for a stable release you'll likely see `1.x.0` for rustc and
 # `0.(x+1).0` for Cargo where they were released on `date`.
 
-date: 2020-04-22
+date: 2020-06-03
 rustc: beta
 cargo: beta
 
diff --git a/src/tools/clippy/clippy_lints/src/write.rs b/src/tools/clippy/clippy_lints/src/write.rs
index dfa6223f1b9..37fbc2bad46 100644
--- a/src/tools/clippy/clippy_lints/src/write.rs
+++ b/src/tools/clippy/clippy_lints/src/write.rs
@@ -279,13 +279,13 @@ impl EarlyLintPass for Write {
             if let (Some(fmt_str), expr) = self.check_tts(cx, &mac.args.inner_tokens(), true) {
                 if fmt_str.symbol == Symbol::intern("") {
                     let mut applicability = Applicability::MachineApplicable;
-                    let suggestion = expr.map_or_else(
-                        move || {
+                    let suggestion = match expr {
+                        Some(expr) => snippet_with_applicability(cx, expr.span, "v", &mut applicability),
+                        None => {
                             applicability = Applicability::HasPlaceholders;
                             Cow::Borrowed("v")
                         },
-                        move |expr| snippet_with_applicability(cx, expr.span, "v", &mut applicability),
-                    );
+                    };
 
                     span_lint_and_sugg(
                         cx,