mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 cf6d6050f7
			
		
	
	
		cf6d6050f7
		
	
	
	
	
		
			
			* The WASI targets deal with the `main` symbol a bit differently than native so some `codegen` and `assembly` tests have been ignored. * All `ignore-emscripten` directives have been updated to `ignore-wasm32` to be more clear that all wasm targets are ignored and it's not just Emscripten. * Most `ignore-wasm32-bare` directives are now gone. * Some ignore directives for wasm were switched to `needs-unwind` instead. * Many `ignore-wasm32*` directives are removed as the tests work with WASI as opposed to `wasm32-unknown-unknown`.
		
			
				
	
	
		
			30 lines
		
	
	
		
			775 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			775 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // Ensure we appropriately error instead of overflowing a calculation when creating a new Alloc
 | |
| // Layout
 | |
| 
 | |
| //@ run-fail
 | |
| //@ compile-flags: -C opt-level=3
 | |
| //@ error-pattern: index out of bounds: the len is 0 but the index is 16777216
 | |
| 
 | |
| fn do_test(x: usize) {
 | |
|     let arr = vec![vec![0u8; 3]];
 | |
| 
 | |
|     let mut z = Vec::new();
 | |
|     for arr_ref in arr {
 | |
|         for y in 0..x {
 | |
|             for _ in 0..1 {
 | |
|                 z.extend(std::iter::repeat(0).take(x));
 | |
|                 let a = y * x;
 | |
|                 let b = (y + 1) * x - 1;
 | |
|                 let slice = &arr_ref[a..b];
 | |
|                 eprintln!("{} {} {} {}", a, b, arr_ref.len(), slice.len());
 | |
|                 eprintln!("{:?}", slice[1 << 24]);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| fn main() {
 | |
|     do_test(1);
 | |
|     do_test(2);
 | |
| }
 |