mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-29 03:37:26 +03:00
Auto merge of #140895 - matthiaskrgr:rollup-rfvqv4t, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #129334 (Implement (part of) ACP 429: add `DerefMut` to `Lazy[Cell/Lock]`) - #139562 (rustdoc: add a handle that makes sidebar resizing more obvious) - #140151 (remove intrinsics::drop_in_place) - #140660 (remove 'unordered' atomic intrinsics) - #140783 (Update documentation of OnceLock::get_or_init.) - #140789 (Update hermit-abi to 0.5.1) - #140879 (1.87.0 release notes: remove nonsensical `~` operator) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
+1
-1
@@ -6,7 +6,7 @@ Version 1.87.0 (2025-05-15)
|
||||
Language
|
||||
--------
|
||||
- [Stabilize `asm_goto` feature](https://github.com/rust-lang/rust/pull/133870)
|
||||
- [Allow parsing open beginning ranges (`..EXPR`) after unary operators `!`, `~`, `-`, and `*`}](https://github.com/rust-lang/rust/pull/134900).
|
||||
- [Allow parsing open beginning ranges (`..EXPR`) after unary operators `!`, `-`, and `*`](https://github.com/rust-lang/rust/pull/134900).
|
||||
- [Don't require method impls for methods with `Self: Sized` bounds in `impl`s for unsized types](https://github.com/rust-lang/rust/pull/135480)
|
||||
- [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>` bounds on return position `impl Trait` in `trait`s](https://github.com/rust-lang/rust/pull/138128)
|
||||
|
||||
|
||||
@@ -2454,7 +2454,6 @@ fn to_gcc(self) -> i32 {
|
||||
use MemOrdering::*;
|
||||
|
||||
let ordering = match self {
|
||||
AtomicOrdering::Unordered => __ATOMIC_RELAXED,
|
||||
AtomicOrdering::Relaxed => __ATOMIC_RELAXED, // TODO(antoyo): check if that's the same.
|
||||
AtomicOrdering::Acquire => __ATOMIC_ACQUIRE,
|
||||
AtomicOrdering::Release => __ATOMIC_RELEASE,
|
||||
|
||||
@@ -415,6 +415,7 @@ pub(crate) fn from_generic(op: rustc_codegen_ssa::common::AtomicRmwBinOp) -> Sel
|
||||
pub(crate) enum AtomicOrdering {
|
||||
#[allow(dead_code)]
|
||||
NotAtomic = 0,
|
||||
#[allow(dead_code)]
|
||||
Unordered = 1,
|
||||
Monotonic = 2,
|
||||
// Consume = 3, // Not specified yet.
|
||||
@@ -428,7 +429,6 @@ impl AtomicOrdering {
|
||||
pub(crate) fn from_generic(ao: rustc_codegen_ssa::common::AtomicOrdering) -> Self {
|
||||
use rustc_codegen_ssa::common::AtomicOrdering as Common;
|
||||
match ao {
|
||||
Common::Unordered => Self::Unordered,
|
||||
Common::Relaxed => Self::Monotonic,
|
||||
Common::Acquire => Self::Acquire,
|
||||
Common::Release => Self::Release,
|
||||
|
||||
@@ -61,7 +61,6 @@ pub enum AtomicRmwBinOp {
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum AtomicOrdering {
|
||||
Unordered,
|
||||
Relaxed,
|
||||
Acquire,
|
||||
Release,
|
||||
|
||||
@@ -336,7 +336,6 @@ pub fn codegen_intrinsic_call(
|
||||
};
|
||||
|
||||
let parse_ordering = |bx: &Bx, s| match s {
|
||||
"unordered" => Unordered,
|
||||
"relaxed" => Relaxed,
|
||||
"acquire" => Acquire,
|
||||
"release" => Release,
|
||||
|
||||
+2
-2
@@ -139,9 +139,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.5.0"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e"
|
||||
checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
|
||||
dependencies = [
|
||||
"compiler_builtins",
|
||||
"rustc-std-workspace-alloc",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use super::UnsafeCell;
|
||||
use crate::hint::unreachable_unchecked;
|
||||
use crate::ops::Deref;
|
||||
use crate::ops::{Deref, DerefMut};
|
||||
use crate::{fmt, mem};
|
||||
|
||||
enum State<T, F> {
|
||||
@@ -284,6 +284,14 @@ fn deref(&self) -> &T {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "lazy_deref_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T, F: FnOnce() -> T> DerefMut for LazyCell<T, F> {
|
||||
#[inline]
|
||||
fn deref_mut(&mut self) -> &mut T {
|
||||
LazyCell::force_mut(self)
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "lazy_cell", since = "1.80.0")]
|
||||
impl<T: Default> Default for LazyCell<T> {
|
||||
/// Creates a new lazy value using `Default` as the initializing function.
|
||||
|
||||
@@ -74,15 +74,6 @@
|
||||
#[cfg(all(target_has_atomic = "8", target_has_atomic = "32", target_has_atomic = "ptr"))]
|
||||
use crate::sync::atomic::{self, AtomicBool, AtomicI32, AtomicIsize, AtomicU32, Ordering};
|
||||
|
||||
#[stable(feature = "drop_in_place", since = "1.8.0")]
|
||||
#[rustc_allowed_through_unstable_modules = "import this function via `std::ptr` instead"]
|
||||
#[deprecated(note = "no longer an intrinsic - use `ptr::drop_in_place` directly", since = "1.52.0")]
|
||||
#[inline]
|
||||
pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
|
||||
// SAFETY: see `ptr::drop_in_place`
|
||||
unsafe { crate::ptr::drop_in_place(to_drop) }
|
||||
}
|
||||
|
||||
// N.B., these intrinsics take raw pointers because they mutate aliased
|
||||
// memory, which is not valid for either `&` or `&mut`.
|
||||
|
||||
@@ -439,12 +430,6 @@ pub unsafe fn atomic_cxchgweak_release_acquire<T: Copy>(
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_nounwind]
|
||||
pub unsafe fn atomic_load_relaxed<T: Copy>(src: *const T) -> T;
|
||||
/// Do NOT use this intrinsic; "unordered" operations do not exist in our memory model!
|
||||
/// In terms of the Rust Abstract Machine, this operation is equivalent to `src.read()`,
|
||||
/// i.e., it performs a non-atomic read.
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_nounwind]
|
||||
pub unsafe fn atomic_load_unordered<T: Copy>(src: *const T) -> T;
|
||||
|
||||
/// Stores the value at the specified memory location.
|
||||
/// `T` must be an integer or pointer type.
|
||||
@@ -473,12 +458,6 @@ pub unsafe fn atomic_cxchgweak_release_acquire<T: Copy>(
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_nounwind]
|
||||
pub unsafe fn atomic_store_relaxed<T: Copy>(dst: *mut T, val: T);
|
||||
/// Do NOT use this intrinsic; "unordered" operations do not exist in our memory model!
|
||||
/// In terms of the Rust Abstract Machine, this operation is equivalent to `dst.write(val)`,
|
||||
/// i.e., it performs a non-atomic write.
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_nounwind]
|
||||
pub unsafe fn atomic_store_unordered<T: Copy>(dst: *mut T, val: T);
|
||||
|
||||
/// Stores the value at the specified memory location, returning the old value.
|
||||
/// `T` must be an integer or pointer type.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use super::poison::once::ExclusiveState;
|
||||
use crate::cell::UnsafeCell;
|
||||
use crate::mem::ManuallyDrop;
|
||||
use crate::ops::Deref;
|
||||
use crate::ops::{Deref, DerefMut};
|
||||
use crate::panic::{RefUnwindSafe, UnwindSafe};
|
||||
use crate::sync::Once;
|
||||
use crate::{fmt, ptr};
|
||||
@@ -313,6 +313,14 @@ fn deref(&self) -> &T {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "lazy_deref_mut", since = "CURRENT_RUSTC_VERSION")]
|
||||
impl<T, F: FnOnce() -> T> DerefMut for LazyLock<T, F> {
|
||||
#[inline]
|
||||
fn deref_mut(&mut self) -> &mut T {
|
||||
LazyLock::force_mut(self)
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "lazy_cell", since = "1.80.0")]
|
||||
impl<T: Default> Default for LazyLock<T> {
|
||||
/// Creates a new lazy value using `Default` as the initializing function.
|
||||
|
||||
@@ -279,7 +279,7 @@ pub fn try_insert(&self, value: T) -> Result<&T, (&T, T)> {
|
||||
///
|
||||
/// Many threads may call `get_or_init` concurrently with different
|
||||
/// initializing functions, but it is guaranteed that only one function
|
||||
/// will be executed.
|
||||
/// will be executed if the function doesn't panic.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
|
||||
@@ -43,6 +43,7 @@ nav.sub {
|
||||
--settings-button-border-focus: #717171;
|
||||
--sidebar-background-color: #f5f5f5;
|
||||
--sidebar-background-color-hover: #e0e0e0;
|
||||
--sidebar-border-color: #ddd;
|
||||
--code-block-background-color: #f5f5f5;
|
||||
--scrollbar-track-background-color: #dcdcdc;
|
||||
--scrollbar-thumb-background-color: rgba(36, 37, 39, 0.6);
|
||||
@@ -149,6 +150,7 @@ nav.sub {
|
||||
--settings-button-border-focus: #ffb900;
|
||||
--sidebar-background-color: #505050;
|
||||
--sidebar-background-color-hover: #676767;
|
||||
--sidebar-border-color: #2A2A2A;
|
||||
--code-block-background-color: #2A2A2A;
|
||||
--scrollbar-track-background-color: #717171;
|
||||
--scrollbar-thumb-background-color: rgba(32, 34, 37, .6);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/* When static files are updated, their suffixes need to be updated.
|
||||
/* ignore-tidy-filelength */
|
||||
/*
|
||||
When static files are updated, their suffixes need to be updated.
|
||||
1. In the top directory run:
|
||||
./x.py doc --stage 1 library/core
|
||||
2. Find the directory containing files named with updated suffixes:
|
||||
@@ -496,12 +498,13 @@ img {
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: var(--desktop-sidebar-z-index);
|
||||
/* resize indicator: hide this when on touch or mobile */
|
||||
border-right: solid 1px var(--sidebar-border-color);
|
||||
}
|
||||
|
||||
.rustdoc.src .sidebar {
|
||||
flex-basis: 50px;
|
||||
width: 50px;
|
||||
border-right: 1px solid;
|
||||
overflow-x: hidden;
|
||||
/* The sidebar is by default hidden */
|
||||
overflow-y: hidden;
|
||||
@@ -515,12 +518,27 @@ img {
|
||||
.sidebar-resizer {
|
||||
touch-action: none;
|
||||
width: 9px;
|
||||
cursor: col-resize;
|
||||
cursor: ew-resize;
|
||||
z-index: calc(var(--desktop-sidebar-z-index) + 1);
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
/* make sure there's a 1px gap between the scrollbar and resize handle */
|
||||
left: calc(var(--desktop-sidebar-width) + 1px);
|
||||
left: var(--desktop-sidebar-width);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
color: var(--right-side-color);
|
||||
}
|
||||
.sidebar-resizer::before {
|
||||
content: "";
|
||||
border-right: dotted 2px currentColor;
|
||||
width: 2px;
|
||||
height: 12px;
|
||||
}
|
||||
.sidebar-resizer::after {
|
||||
content: "";
|
||||
border-right: dotted 2px currentColor;
|
||||
width: 2px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.rustdoc.src .sidebar-resizer {
|
||||
@@ -543,11 +561,12 @@ img {
|
||||
}
|
||||
|
||||
.sidebar-resizing * {
|
||||
cursor: col-resize !important;
|
||||
cursor: ew-resize !important;
|
||||
}
|
||||
|
||||
.sidebar-resizing .sidebar {
|
||||
position: fixed;
|
||||
border-right: solid 2px var(--sidebar-resizer-active);
|
||||
}
|
||||
.sidebar-resizing > body {
|
||||
padding-left: var(--resizing-sidebar-width);
|
||||
@@ -561,8 +580,9 @@ img {
|
||||
margin: 0;
|
||||
/* when active or hovered, place resizer glow on top of the sidebar (right next to, or even
|
||||
on top of, the scrollbar) */
|
||||
left: var(--desktop-sidebar-width);
|
||||
left: calc(var(--desktop-sidebar-width) - 1px);
|
||||
border-left: solid 1px var(--sidebar-resizer-hover);
|
||||
color: var(--sidebar-resizer-hover);
|
||||
}
|
||||
|
||||
.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,
|
||||
@@ -578,21 +598,20 @@ img {
|
||||
/* too easy to hit the resizer while trying to hit the [-] toggle */
|
||||
display: none !important;
|
||||
}
|
||||
.sidebar {
|
||||
/* resize indicator: hide this when on touch or mobile */
|
||||
border-right: none;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-resizer.active {
|
||||
/* make the resize tool bigger when actually resizing, to avoid :hover styles on other stuff
|
||||
while resizing */
|
||||
padding: 0 140px;
|
||||
width: 2px;
|
||||
width: calc(140px + 140px + 9px + 2px);
|
||||
margin-left: -140px;
|
||||
border-left: none;
|
||||
}
|
||||
.sidebar-resizer.active::before {
|
||||
border-left: solid 2px var(--sidebar-resizer-active);
|
||||
display: block;
|
||||
height: 100%;
|
||||
content: "";
|
||||
color: var(--sidebar-resizer-active);
|
||||
}
|
||||
|
||||
.sidebar, .mobile-topbar, .sidebar-menu-toggle,
|
||||
@@ -2509,6 +2528,8 @@ in src-script.js and main.js
|
||||
/* Reduce height slightly to account for mobile topbar. */
|
||||
height: calc(100vh - 45px);
|
||||
width: 200px;
|
||||
/* resize indicator: hide this when on touch or mobile */
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* The source view uses a different design for the sidebar toggle, and doesn't have a topbar,
|
||||
@@ -2897,6 +2918,7 @@ by default.
|
||||
--settings-button-border-focus: #717171;
|
||||
--sidebar-background-color: #f5f5f5;
|
||||
--sidebar-background-color-hover: #e0e0e0;
|
||||
--sidebar-border-color: #ddd;
|
||||
--code-block-background-color: #f5f5f5;
|
||||
--scrollbar-track-background-color: #dcdcdc;
|
||||
--scrollbar-thumb-background-color: rgba(36, 37, 39, 0.6);
|
||||
@@ -3002,6 +3024,7 @@ by default.
|
||||
--settings-button-border-focus: #ffb900;
|
||||
--sidebar-background-color: #505050;
|
||||
--sidebar-background-color-hover: #676767;
|
||||
--sidebar-border-color: #999;
|
||||
--code-block-background-color: #2A2A2A;
|
||||
--scrollbar-track-background-color: #717171;
|
||||
--scrollbar-thumb-background-color: rgba(32, 34, 37, .6);
|
||||
@@ -3114,6 +3137,7 @@ Original by Dempfi (https://github.com/dempfi/ayu)
|
||||
--settings-button-border-focus: #e0e0e0;
|
||||
--sidebar-background-color: #14191f;
|
||||
--sidebar-background-color-hover: rgba(70, 70, 70, 0.33);
|
||||
--sidebar-border-color: #5c6773;
|
||||
--code-block-background-color: #191f26;
|
||||
--scrollbar-track-background-color: transparent;
|
||||
--scrollbar-thumb-background-color: #5c6773;
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
{% endif %}
|
||||
{{ sidebar|safe }}
|
||||
</nav> {# #}
|
||||
<div class="sidebar-resizer"></div> {# #}
|
||||
<div class="sidebar-resizer" title="Drag to resize sidebar"></div> {# #}
|
||||
<main>
|
||||
{% if page.css_class != "src" %}<div class="width-limiter">{% endif %}
|
||||
{# defined in storage.js to avoid duplicating complex UI across every page #}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
let _3: ();
|
||||
let mut _4: *mut std::vec::Vec<A>;
|
||||
let mut _5: *mut std::option::Option<B>;
|
||||
+ scope 1 (inlined std::ptr::drop_in_place::<Vec<A>> - shim(Some(Vec<A>))) {
|
||||
+ scope 1 (inlined drop_in_place::<Vec<A>> - shim(Some(Vec<A>))) {
|
||||
+ let mut _6: &mut std::vec::Vec<A>;
|
||||
+ let mut _7: ();
|
||||
+ scope 2 (inlined <Vec<A> as Drop>::drop) {
|
||||
@@ -38,14 +38,14 @@
|
||||
+ scope 13 (inlined std::ptr::from_raw_parts_mut::<[A], A>) {
|
||||
+ }
|
||||
+ }
|
||||
+ scope 14 (inlined std::ptr::drop_in_place::<[A]> - shim(Some([A]))) {
|
||||
+ scope 14 (inlined drop_in_place::<[A]> - shim(Some([A]))) {
|
||||
+ let mut _12: usize;
|
||||
+ let mut _13: *mut A;
|
||||
+ let mut _14: bool;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ scope 15 (inlined std::ptr::drop_in_place::<Option<B>> - shim(Some(Option<B>))) {
|
||||
+ scope 15 (inlined drop_in_place::<Option<B>> - shim(Some(Option<B>))) {
|
||||
+ let mut _15: isize;
|
||||
+ let mut _16: isize;
|
||||
+ }
|
||||
@@ -54,7 +54,7 @@
|
||||
StorageLive(_3);
|
||||
StorageLive(_4);
|
||||
_4 = copy _1;
|
||||
- _3 = std::ptr::drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind unreachable];
|
||||
- _3 = drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind unreachable];
|
||||
+ StorageLive(_6);
|
||||
+ StorageLive(_7);
|
||||
+ _6 = &mut (*_4);
|
||||
@@ -82,7 +82,7 @@
|
||||
StorageDead(_3);
|
||||
StorageLive(_5);
|
||||
_5 = copy _2;
|
||||
- _0 = std::ptr::drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind unreachable];
|
||||
- _0 = drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind unreachable];
|
||||
+ StorageLive(_15);
|
||||
+ StorageLive(_16);
|
||||
+ _15 = discriminant((*_5));
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
let _3: ();
|
||||
let mut _4: *mut std::vec::Vec<A>;
|
||||
let mut _5: *mut std::option::Option<B>;
|
||||
+ scope 1 (inlined std::ptr::drop_in_place::<Option<B>> - shim(Some(Option<B>))) {
|
||||
+ scope 1 (inlined drop_in_place::<Option<B>> - shim(Some(Option<B>))) {
|
||||
+ let mut _6: isize;
|
||||
+ let mut _7: isize;
|
||||
+ }
|
||||
@@ -17,7 +17,7 @@
|
||||
StorageLive(_3);
|
||||
StorageLive(_4);
|
||||
_4 = copy _1;
|
||||
_3 = std::ptr::drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind continue];
|
||||
_3 = drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind continue];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
@@ -25,7 +25,7 @@
|
||||
StorageDead(_3);
|
||||
StorageLive(_5);
|
||||
_5 = copy _2;
|
||||
- _0 = std::ptr::drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind continue];
|
||||
- _0 = drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind continue];
|
||||
+ StorageLive(_6);
|
||||
+ StorageLive(_7);
|
||||
+ _6 = discriminant((*_5));
|
||||
|
||||
@@ -11,7 +11,7 @@ pub fn clone<A, B>(f: fn(A, B)) -> fn(A, B) {
|
||||
// EMIT_MIR inline_shims.drop.Inline.diff
|
||||
pub fn drop<A, B>(a: *mut Vec<A>, b: *mut Option<B>) {
|
||||
// CHECK-LABEL: fn drop(
|
||||
// CHECK: (inlined std::ptr::drop_in_place::<Option<B>> - shim(Some(Option<B>)))
|
||||
// CHECK: (inlined drop_in_place::<Option<B>> - shim(Some(Option<B>)))
|
||||
unsafe { std::ptr::drop_in_place(a) }
|
||||
unsafe { std::ptr::drop_in_place(b) }
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// MIR for `std::ptr::drop_in_place` after SimplifyCfg-make_shim
|
||||
// MIR for `drop_in_place` after SimplifyCfg-make_shim
|
||||
|
||||
fn std::ptr::drop_in_place(_1: *mut Test) -> () {
|
||||
fn drop_in_place(_1: *mut Test) -> () {
|
||||
let mut _0: ();
|
||||
let mut _2: &mut Test;
|
||||
let mut _3: &mut Test;
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// MIR for `std::ptr::drop_in_place` after SimplifyCfg-make_shim
|
||||
// MIR for `drop_in_place` after SimplifyCfg-make_shim
|
||||
|
||||
fn std::ptr::drop_in_place(_1: *mut Test) -> () {
|
||||
fn drop_in_place(_1: *mut Test) -> () {
|
||||
let mut _0: ();
|
||||
let mut _2: &mut Test;
|
||||
let mut _3: &mut Test;
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops
|
||||
// MIR for `drop_in_place` before AddMovesForPackedDrops
|
||||
|
||||
fn std::ptr::drop_in_place(_1: *mut [String; 42]) -> () {
|
||||
fn drop_in_place(_1: *mut [String; 42]) -> () {
|
||||
let mut _0: ();
|
||||
let mut _2: *mut [std::string::String; 42];
|
||||
let mut _3: *mut [std::string::String];
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops
|
||||
// MIR for `drop_in_place` before AddMovesForPackedDrops
|
||||
|
||||
fn std::ptr::drop_in_place(_1: *mut [String]) -> () {
|
||||
fn drop_in_place(_1: *mut [String]) -> () {
|
||||
let mut _0: ();
|
||||
let mut _2: usize;
|
||||
let mut _3: usize;
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops
|
||||
// MIR for `drop_in_place` before AddMovesForPackedDrops
|
||||
|
||||
fn std::ptr::drop_in_place(_1: *mut Vec<i32>) -> () {
|
||||
fn drop_in_place(_1: *mut Vec<i32>) -> () {
|
||||
let mut _0: ();
|
||||
let mut _2: &mut std::vec::Vec<i32>;
|
||||
let mut _3: ();
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// Checks sidebar resizing close the Settings popover
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
show-text: true
|
||||
click: "#settings-menu"
|
||||
wait-for: "#settings"
|
||||
assert-css: ("#settings", {"display": "block"})
|
||||
// normal resizing
|
||||
drag-and-drop: ((205, 100), (185, 100))
|
||||
assert-property: (".sidebar", {"clientWidth": "182"})
|
||||
assert-property: (".sidebar", {"clientWidth": "181"})
|
||||
assert-css: ("#settings", {"display": "none"})
|
||||
|
||||
// Now same thing, but for source code
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Checks sidebar resizing stays synced with the setting
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
show-text: true
|
||||
|
||||
// Verify that the "hide" option is unchecked
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// Checks sidebar resizing
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
show-text: true
|
||||
// normal resizing
|
||||
drag-and-drop: ((205, 100), (185, 100))
|
||||
assert-property: (".sidebar", {"clientWidth": "182"})
|
||||
assert-property: (".sidebar", {"clientWidth": "181"})
|
||||
// resize past maximum (don't grow past 500)
|
||||
drag-and-drop: ((185, 100), (600, 100))
|
||||
assert-property: (".sidebar", {"clientWidth": "500"})
|
||||
assert-property: (".sidebar", {"clientWidth": "499"})
|
||||
// resize past minimum (hide sidebar)
|
||||
drag-and-drop: ((501, 100), (5, 100))
|
||||
assert-property: (".sidebar", {"clientWidth": "0"})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Checks multiple things on the sidebar display (width of its elements, colors, etc).
|
||||
include: "utils.goml"
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
show-text: true
|
||||
|
||||
// First, check the sidebar colors.
|
||||
@@ -84,13 +84,13 @@ assert-property: ("html", {"scrollTop": "0"})
|
||||
|
||||
// We now go back to the crate page to click on the "lib2" crate link.
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
assert-css: (".sidebar-elems ul.crate > li:first-child > a", {"color": "#356da4"})
|
||||
click: ".sidebar-elems ul.crate > li:first-child > a"
|
||||
|
||||
// PAGE: lib2/index.html
|
||||
go-to: "file://" + |DOC_PATH| + "/lib2/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
|
||||
assert-count: (".sidebar .location", 0)
|
||||
// We check that we have the crates list and that the "current" on is now "lib2".
|
||||
@@ -116,7 +116,7 @@ assert-text: (".sidebar-elems ul.block > li.current > a", "foobar")
|
||||
assert-false: ".sidebar-elems > .crate"
|
||||
|
||||
go-to: "./module/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
|
||||
assert-text: (".sidebar .location", "Module module")
|
||||
assert-count: (".sidebar .location", 1)
|
||||
@@ -134,7 +134,7 @@ assert-property: (".sidebar > .sidebar-elems > #rustdoc-modnav > h2 > a", {
|
||||
assert-false: ".sidebar-elems > .crate"
|
||||
|
||||
go-to: "./sub_module/sub_sub_module/index.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
assert-text: (".sidebar > .sidebar-crate > h2 > a", "lib2")
|
||||
assert-text: (".sidebar .location", "Module sub_sub_module")
|
||||
assert-text: (".sidebar > .sidebar-elems > #rustdoc-modnav > h2", "In lib2::module::sub_module")
|
||||
@@ -149,13 +149,13 @@ assert-text: ("#functions + .item-table dt > a", "foo")
|
||||
|
||||
// Links to trait implementations in the sidebar should not wrap even if they are long.
|
||||
go-to: "file://" + |DOC_PATH| + "/lib2/struct.HasALongTraitWithParams.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
assert-property: (".sidebar-elems section .block li > a", {"offsetHeight": 29})
|
||||
|
||||
// Test that clicking on of the "In <module>" headings in the sidebar links to the
|
||||
// appropriate anchor in index.html.
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
click: "//ul[@class='block mod']/preceding-sibling::h3/a"
|
||||
// PAGE: index.html
|
||||
assert-css: ("#modules", {"background-color": "#fdffd3"})
|
||||
@@ -163,10 +163,10 @@ assert-css: ("#modules", {"background-color": "#fdffd3"})
|
||||
// Finally, assert that the Summary toggle doesn't affect sidebar width.
|
||||
click: "#toggle-all-docs"
|
||||
assert-text: ("#toggle-all-docs", "Show all")
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
click: "#toggle-all-docs"
|
||||
assert-text: ("#toggle-all-docs", "Summary")
|
||||
assert-property: (".sidebar", {"clientWidth": "200"})
|
||||
assert-property: (".sidebar", {"clientWidth": "199"})
|
||||
|
||||
// Checks that all.html and index.html have their sidebar link in the same place.
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
error[E0080]: evaluation of `std::ptr::drop_in_place::<Vec<u32>> - shim(Some(Vec<u32>))` failed
|
||||
error[E0080]: evaluation of `drop_in_place::<Vec<u32>> - shim(Some(Vec<u32>))` failed
|
||||
--> $DIR/assoc_const.rs:12:31
|
||||
|
|
||||
LL | const F: u32 = (U::X, 42).1;
|
||||
| ^ calling non-const function `<Vec<u32> as Drop>::drop`
|
||||
|
|
||||
note: inside `std::ptr::drop_in_place::<(Vec<u32>, u32)> - shim(Some((Vec<u32>, u32)))`
|
||||
note: inside `drop_in_place::<(Vec<u32>, u32)> - shim(Some((Vec<u32>, u32)))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
note: inside `std::ptr::drop_in_place::<Vec<u32>> - shim(Some(Vec<u32>))`
|
||||
note: inside `drop_in_place::<Vec<u32>> - shim(Some(Vec<u32>))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
|
||||
note: erroneous constant encountered
|
||||
|
||||
@@ -15,6 +15,6 @@ fn main() {}
|
||||
let _v: Vec<i32> = Vec::new();
|
||||
}; //~ ERROR could not evaluate static initializer
|
||||
//~| NOTE calling non-const function `<Vec<i32> as Drop>::drop`
|
||||
//~| NOTE inside `std::ptr::drop_in_place::<Vec<i32>> - shim(Some(Vec<i32>))`
|
||||
//~| NOTE inside `drop_in_place::<Vec<i32>> - shim(Some(Vec<i32>))`
|
||||
|
||||
//~? WARN skipping const checks
|
||||
|
||||
@@ -4,7 +4,7 @@ error[E0080]: could not evaluate static initializer
|
||||
LL | };
|
||||
| ^ calling non-const function `<Vec<i32> as Drop>::drop`
|
||||
|
|
||||
note: inside `std::ptr::drop_in_place::<Vec<i32>> - shim(Some(Vec<i32>))`
|
||||
note: inside `drop_in_place::<Vec<i32>> - shim(Some(Vec<i32>))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
|
||||
warning: skipping const checks
|
||||
|
||||
@@ -13,11 +13,11 @@ error[E0080]: evaluation of constant value failed
|
||||
LL | };
|
||||
| ^ calling non-const function `<Vec<u8> as Drop>::drop`
|
||||
|
|
||||
note: inside `std::ptr::drop_in_place::<Option<String>> - shim(Some(Option<String>))`
|
||||
note: inside `drop_in_place::<Option<String>> - shim(Some(Option<String>))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
note: inside `std::ptr::drop_in_place::<String> - shim(Some(String))`
|
||||
note: inside `drop_in_place::<String> - shim(Some(String))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
note: inside `std::ptr::drop_in_place::<Vec<u8>> - shim(Some(Vec<u8>))`
|
||||
note: inside `drop_in_place::<Vec<u8>> - shim(Some(Vec<u8>))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
|
||||
error[E0493]: destructor of `Option<String>` cannot be evaluated at compile-time
|
||||
@@ -34,11 +34,11 @@ error[E0080]: evaluation of constant value failed
|
||||
LL | };
|
||||
| ^ calling non-const function `<Vec<u8> as Drop>::drop`
|
||||
|
|
||||
note: inside `std::ptr::drop_in_place::<Option<String>> - shim(Some(Option<String>))`
|
||||
note: inside `drop_in_place::<Option<String>> - shim(Some(Option<String>))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
note: inside `std::ptr::drop_in_place::<String> - shim(Some(String))`
|
||||
note: inside `drop_in_place::<String> - shim(Some(String))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
note: inside `std::ptr::drop_in_place::<Vec<u8>> - shim(Some(Vec<u8>))`
|
||||
note: inside `drop_in_place::<Vec<u8>> - shim(Some(Vec<u8>))`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
|
||||
error[E0493]: destructor of `(u32, Option<String>)` cannot be evaluated at compile-time
|
||||
|
||||
@@ -8,10 +8,9 @@
|
||||
#![allow(unused_imports)]
|
||||
#![allow(deprecated)]
|
||||
|
||||
use std::intrinsics::drop_in_place as _;
|
||||
use std::intrinsics::copy_nonoverlapping as _;
|
||||
use std::intrinsics::copy as _;
|
||||
use std::intrinsics::write_bytes as _;
|
||||
use std::intrinsics::{drop_in_place, copy_nonoverlapping, copy, write_bytes};
|
||||
use std::intrinsics::{copy_nonoverlapping, copy, write_bytes};
|
||||
|
||||
fn main() {}
|
||||
|
||||
Reference in New Issue
Block a user