diff options
| author | bors <bors@rust-lang.org> | 2025-04-03 15:31:20 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-04-03 15:31:20 +0000 |
| commit | 82eb03ec6220ee435e0e07fdaf3f0a68a79aab17 (patch) | |
| tree | 6e19884edcff792c9a85b8da77749a3f63597524 /tests/codegen | |
| parent | 946aea0b3d9f43e57953ce5094d8e4a2a244ce71 (diff) | |
| parent | 29c0fe747ae83d2519aaf9c9713e8716f7a3511b (diff) | |
| download | rust-82eb03ec6220ee435e0e07fdaf3f0a68a79aab17.tar.gz rust-82eb03ec6220ee435e0e07fdaf3f0a68a79aab17.zip | |
Auto merge of #139301 - matthiaskrgr:rollup-sa6ali8, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #139080 (Experimental feature gate for `super let`) - #139145 (slice: Remove some uses of unsafe in first/last chunk methods) - #139149 (unstable book: document import_trait_associated_functions) - #139273 (Apply requested API changes to `cell_update`) - #139282 (rustdoc: make settings checkboxes always square) - #139283 (Rustc dev guide subtree update) - #139294 (Fix the `f16`/`f128` feature gates on integer literals) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'tests/codegen')
| -rw-r--r-- | tests/codegen/slice-split-at.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/codegen/slice-split-at.rs b/tests/codegen/slice-split-at.rs new file mode 100644 index 00000000000..07018cf9c91 --- /dev/null +++ b/tests/codegen/slice-split-at.rs @@ -0,0 +1,24 @@ +//@ compile-flags: -Copt-level=3 +#![crate_type = "lib"] + +// Check that no panic is generated in `split_at` when calculating the index for +// the tail chunk using `checked_sub`. +// +// Tests written for refactored implementations of: +// `<[T]>::{split_last_chunk, split_last_chunk_mut, last_chunk, last_chunk_mut}` + +// CHECK-LABEL: @split_at_last_chunk +#[no_mangle] +pub fn split_at_last_chunk(s: &[u8], chunk_size: usize) -> Option<(&[u8], &[u8])> { + // CHECK-NOT: panic + let Some(index) = s.len().checked_sub(chunk_size) else { return None }; + Some(s.split_at(index)) +} + +// CHECK-LABEL: @split_at_mut_last_chunk +#[no_mangle] +pub fn split_at_mut_last_chunk(s: &mut [u8], chunk_size: usize) -> Option<(&mut [u8], &mut [u8])> { + // CHECK-NOT: panic + let Some(index) = s.len().checked_sub(chunk_size) else { return None }; + Some(s.split_at_mut(index)) +} |
