Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 02046a5

Browse files
committed
Auto merge of rust-lang#70371 - Centril:rollup-ywi1vo3, r=Centril
Rollup of 8 pull requests Successful merges: - rust-lang#70023 (clean up E0436 explanation) - rust-lang#70234 (#[track_caller] on core::ops::{Index, IndexMut}.) - rust-lang#70241 (Miri: move ModifiedStatic to ConstEval errors) - rust-lang#70342 (IoSlice/IoSliceMut should be Send and Sync) - rust-lang#70350 (Request "-Z unstable-options" for unstable options) - rust-lang#70355 (Clean up E0454) - rust-lang#70359 (must_use on split_off) - rust-lang#70368 (Mark hotplug_codegen_backend as ignore-stage1) Failed merges: r? @ghost
2 parents 2dcf54f + bf1ad22 commit 02046a5

File tree

29 files changed

+237
-118
lines changed

29 files changed

+237
-118
lines changed

src/liballoc/collections/vec_deque.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,6 +1876,7 @@ impl<T> VecDeque<T> {
18761876
/// assert_eq!(buf2, [2, 3]);
18771877
/// ```
18781878
#[inline]
1879+
#[must_use = "use `.truncate()` if you don't need the other half"]
18791880
#[stable(feature = "split_off", since = "1.4.0")]
18801881
pub fn split_off(&mut self, at: usize) -> Self {
18811882
let len = self.len();

src/liballoc/string.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,6 +1461,7 @@ impl String {
14611461
/// ```
14621462
#[inline]
14631463
#[stable(feature = "string_split_off", since = "1.16.0")]
1464+
#[must_use = "use `.truncate()` if you don't need the other half"]
14641465
pub fn split_off(&mut self, at: usize) -> String {
14651466
assert!(self.is_char_boundary(at));
14661467
let other = self.vec.split_off(at);

src/liballoc/tests/string.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,14 +266,14 @@ fn test_split_off_empty() {
266266
fn test_split_off_past_end() {
267267
let orig = "Hello, world!";
268268
let mut split = String::from(orig);
269-
split.split_off(orig.len() + 1);
269+
let _ = split.split_off(orig.len() + 1);
270270
}
271271

272272
#[test]
273273
#[should_panic]
274274
fn test_split_off_mid_char() {
275275
let mut orig = String::from("山");
276-
orig.split_off(1);
276+
let _ = orig.split_off(1);
277277
}
278278

279279
#[test]

src/libcore/ops/index.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ pub trait Index<Idx: ?Sized> {
6565

6666
/// Performs the indexing (`container[index]`) operation.
6767
#[stable(feature = "rust1", since = "1.0.0")]
68+
#[cfg_attr(not(bootstrap), track_caller)]
6869
fn index(&self, index: Idx) -> &Self::Output;
6970
}
7071

@@ -166,5 +167,6 @@ see chapter in The Book <https://doc.rust-lang.org/book/ch08-02-strings.html#ind
166167
pub trait IndexMut<Idx: ?Sized>: Index<Idx> {
167168
/// Performs the mutable indexing (`container[index]`) operation.
168169
#[stable(feature = "rust1", since = "1.0.0")]
170+
#[cfg_attr(not(bootstrap), track_caller)]
169171
fn index_mut(&mut self, index: Idx) -> &mut Self::Output;
170172
}

src/libcore/slice/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2306,6 +2306,7 @@ impl<T> [T] {
23062306
/// assert_eq!(&bytes, b"Hello, Wello!");
23072307
/// ```
23082308
#[stable(feature = "copy_within", since = "1.37.0")]
2309+
#[track_caller]
23092310
pub fn copy_within<R: ops::RangeBounds<usize>>(&mut self, src: R, dest: usize)
23102311
where
23112312
T: Copy,
@@ -2721,18 +2722,21 @@ where
27212722

27222723
#[inline(never)]
27232724
#[cold]
2725+
#[track_caller]
27242726
fn slice_index_len_fail(index: usize, len: usize) -> ! {
27252727
panic!("index {} out of range for slice of length {}", index, len);
27262728
}
27272729

27282730
#[inline(never)]
27292731
#[cold]
2732+
#[track_caller]
27302733
fn slice_index_order_fail(index: usize, end: usize) -> ! {
27312734
panic!("slice index starts at {} but ends at {}", index, end);
27322735
}
27332736

27342737
#[inline(never)]
27352738
#[cold]
2739+
#[track_caller]
27362740
fn slice_index_overflow_fail() -> ! {
27372741
panic!("attempted to index slice up to maximum usize");
27382742
}
@@ -2804,11 +2808,13 @@ pub trait SliceIndex<T: ?Sized>: private_slice_index::Sealed {
28042808
/// Returns a shared reference to the output at this location, panicking
28052809
/// if out of bounds.
28062810
#[unstable(feature = "slice_index_methods", issue = "none")]
2811+
#[cfg_attr(not(bootstrap), track_caller)]
28072812
fn index(self, slice: &T) -> &Self::Output;
28082813

28092814
/// Returns a mutable reference to the output at this location, panicking
28102815
/// if out of bounds.
28112816
#[unstable(feature = "slice_index_methods", issue = "none")]
2817+
#[cfg_attr(not(bootstrap), track_caller)]
28122818
fn index_mut(self, slice: &mut T) -> &mut Self::Output;
28132819
}
28142820

src/libcore/str/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1794,6 +1794,7 @@ mod traits {
17941794

17951795
#[inline(never)]
17961796
#[cold]
1797+
#[track_caller]
17971798
fn str_index_overflow_fail() -> ! {
17981799
panic!("attempted to index str up to maximum usize");
17991800
}
@@ -2185,6 +2186,7 @@ fn truncate_to_char_boundary(s: &str, mut max: usize) -> (bool, &str) {
21852186

21862187
#[inline(never)]
21872188
#[cold]
2189+
#[track_caller]
21882190
fn slice_error_fail(s: &str, begin: usize, end: usize) -> ! {
21892191
const MAX_DISPLAY_LENGTH: usize = 256;
21902192
let (truncated, s_trunc) = truncate_to_char_boundary(s, MAX_DISPLAY_LENGTH);

src/librustc/mir/interpret/error.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,6 @@ pub enum UnsupportedOpInfo {
453453
ReadForeignStatic(DefId),
454454
/// Could not find MIR for a function.
455455
NoMirFor(DefId),
456-
/// Modified a static during const-eval.
457-
/// FIXME: move this to `ConstEvalErrKind` through a machine hook.
458-
ModifiedStatic,
459456
/// Encountered a pointer where we needed raw bytes.
460457
ReadPointerAsBytes,
461458
/// Encountered raw bytes where we needed a pointer.
@@ -471,12 +468,6 @@ impl fmt::Debug for UnsupportedOpInfo {
471468
write!(f, "tried to read from foreign (extern) static {:?}", did)
472469
}
473470
NoMirFor(did) => write!(f, "could not load MIR for {:?}", did),
474-
ModifiedStatic => write!(
475-
f,
476-
"tried to modify a static's initial value from another static's \
477-
initializer"
478-
),
479-
480471
ReadPointerAsBytes => write!(f, "unable to turn pointer into raw bytes",),
481472
ReadBytesAsPointer => write!(f, "unable to turn bytes into a pointer"),
482473
}

src/librustc/ty/context.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,7 @@ pub struct GlobalCtxt<'tcx> {
984984
/// Stores the value of constants (and deduplicates the actual memory)
985985
allocation_interner: ShardedHashMap<&'tcx Allocation, ()>,
986986

987+
/// Stores memory for globals (statics/consts).
987988
pub alloc_map: Lock<interpret::AllocMap<'tcx>>,
988989

989990
layout_interner: ShardedHashMap<&'tcx LayoutDetails, ()>,

src/librustc_error_codes/error_codes/E0436.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
The functional record update syntax is only allowed for structs. (Struct-like
2-
enum variants don't qualify, for example.)
1+
The functional record update syntax was used on something other than a struct.
32

43
Erroneous code example:
54

@@ -24,7 +23,9 @@ fn one_up_competitor(competitor_frequency: PublicationFrequency)
2423
}
2524
```
2625

27-
Rewrite the expression without functional record update syntax:
26+
The functional record update syntax is only allowed for structs (struct-like
27+
enum variants don't qualify, for example). To fix the previous code, rewrite the
28+
expression without functional record update syntax:
2829

2930
```
3031
enum PublicationFrequency {

src/librustc_error_codes/error_codes/E0454.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
A link name was given with an empty name. Erroneous code example:
1+
A link name was given with an empty name.
2+
3+
Erroneous code example:
24

35
```compile_fail,E0454
46
#[link(name = "")] extern {}

0 commit comments

Comments
 (0)