From 5b78e98a372c323c2dfa5a19bc110f1c81415f8e Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 19 Apr 2019 09:37:33 +0200 Subject: [PATCH 1/8] bump rand to fix Miri failures --- Cargo.lock | 13 +++++++++++-- src/liballoc/Cargo.toml | 4 ++-- src/liballoc/benches/slice.rs | 8 ++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 972276bb38149..ac6849c75499d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,8 +19,8 @@ version = "0.0.0" dependencies = [ "compiler_builtins 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "core 0.0.0", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2343,6 +2343,14 @@ dependencies = [ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_xorshift" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rayon" version = "1.1.0" @@ -4569,6 +4577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" "checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" +"checksum rand_xorshift 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "77d416b86801d23dde1aa643023b775c3a462efc0ed96443add11546cdf1dca8" "checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4" "checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" diff --git a/src/liballoc/Cargo.toml b/src/liballoc/Cargo.toml index bcb27bb5161e2..d1119f7b7c0a7 100644 --- a/src/liballoc/Cargo.toml +++ b/src/liballoc/Cargo.toml @@ -15,8 +15,8 @@ core = { path = "../libcore" } compiler_builtins = { version = "0.1.10", features = ['rustc-dep-of-std'] } [dev-dependencies] -rand = "0.6" -rand_xorshift = "0.1" +rand = "0.7" +rand_xorshift = "0.2" [[test]] name = "collectionstests" diff --git a/src/liballoc/benches/slice.rs b/src/liballoc/benches/slice.rs index f17fb8212ce19..ef91d801dc72c 100644 --- a/src/liballoc/benches/slice.rs +++ b/src/liballoc/benches/slice.rs @@ -186,12 +186,12 @@ const SEED: [u8; 16] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; fn gen_random(len: usize) -> Vec { let mut rng = XorShiftRng::from_seed(SEED); - rng.sample_iter(&Standard).take(len).collect() + (&mut rng).sample_iter(&Standard).take(len).collect() } fn gen_random_bytes(len: usize) -> Vec { let mut rng = XorShiftRng::from_seed(SEED); - rng.sample_iter(&Standard).take(len).collect() + (&mut rng).sample_iter(&Standard).take(len).collect() } fn gen_mostly_ascending(len: usize) -> Vec { @@ -221,14 +221,14 @@ fn gen_strings(len: usize) -> Vec { let mut v = vec![]; for _ in 0..len { let n = rng.gen::() % 20 + 1; - v.push(rng.sample_iter(&Alphanumeric).take(n).collect()); + v.push((&mut rng).sample_iter(&Alphanumeric).take(n).collect()); } v } fn gen_big_random(len: usize) -> Vec<[u64; 16]> { let mut rng = XorShiftRng::from_seed(SEED); - rng.sample_iter(&Standard).map(|x| [x; 16]).take(len).collect() + (&mut rng).sample_iter(&Standard).map(|x| [x; 16]).take(len).collect() } macro_rules! sort { From 0cb16f7d5ebf0ef71e55d1b7f8a809f8d3d87de2 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 4 Aug 2019 14:27:48 +0200 Subject: [PATCH 2/8] bump libcore tests to rand 0.7 --- Cargo.lock | 2 +- src/libcore/Cargo.toml | 2 +- src/libcore/tests/num/flt2dec/random.rs | 8 ++++---- src/libcore/tests/slice.rs | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac6849c75499d..797a0a5fe840d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -514,7 +514,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "core" version = "0.0.0" dependencies = [ - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/src/libcore/Cargo.toml b/src/libcore/Cargo.toml index ede5fff5f4a0e..ac07ffb14febd 100644 --- a/src/libcore/Cargo.toml +++ b/src/libcore/Cargo.toml @@ -21,7 +21,7 @@ name = "corebenches" path = "../libcore/benches/lib.rs" [dev-dependencies] -rand = "0.6" +rand = "0.7" [features] # Make panics and failed asserts immediately abort without formatting any message diff --git a/src/libcore/tests/num/flt2dec/random.rs b/src/libcore/tests/num/flt2dec/random.rs index 35e3fbcbb7870..d56787b2819a7 100644 --- a/src/libcore/tests/num/flt2dec/random.rs +++ b/src/libcore/tests/num/flt2dec/random.rs @@ -8,8 +8,8 @@ use core::num::flt2dec::strategy::grisu::format_exact_opt; use core::num::flt2dec::strategy::grisu::format_shortest_opt; use core::num::flt2dec::{decode, DecodableFloat, FullDecoded, Decoded}; -use rand::FromEntropy; -use rand::rngs::SmallRng; +use rand::SeedableRng; +use rand::rngs::StdRng; use rand::distributions::{Distribution, Uniform}; pub fn decode_finite(v: T) -> Decoded { @@ -65,7 +65,7 @@ pub fn f32_random_equivalence_test(f: F, g: G, k: usize, n: usize) if cfg!(target_os = "emscripten") { return // using rng pulls in i128 support, which doesn't work } - let mut rng = SmallRng::from_entropy(); + let mut rng = StdRng::from_entropy(); let f32_range = Uniform::new(0x0000_0001u32, 0x7f80_0000); iterate("f32_random_equivalence_test", k, n, f, g, |_| { let x = f32::from_bits(f32_range.sample(&mut rng)); @@ -79,7 +79,7 @@ pub fn f64_random_equivalence_test(f: F, g: G, k: usize, n: usize) if cfg!(target_os = "emscripten") { return // using rng pulls in i128 support, which doesn't work } - let mut rng = SmallRng::from_entropy(); + let mut rng = StdRng::from_entropy(); let f64_range = Uniform::new(0x0000_0000_0000_0001u64, 0x7ff0_0000_0000_0000); iterate("f64_random_equivalence_test", k, n, f, g, |_| { let x = f64::from_bits(f64_range.sample(&mut rng)); diff --git a/src/libcore/tests/slice.rs b/src/libcore/tests/slice.rs index b046c3ce5ce6a..04ad02766616d 100644 --- a/src/libcore/tests/slice.rs +++ b/src/libcore/tests/slice.rs @@ -1157,7 +1157,7 @@ fn test_rotate_right() { fn sort_unstable() { use core::cmp::Ordering::{Equal, Greater, Less}; use core::slice::heapsort; - use rand::{FromEntropy, Rng, rngs::SmallRng, seq::SliceRandom}; + use rand::{SeedableRng, Rng, rngs::StdRng, seq::SliceRandom}; #[cfg(not(miri))] // Miri is too slow let large_range = 500..510; @@ -1171,7 +1171,7 @@ fn sort_unstable() { let mut v = [0; 600]; let mut tmp = [0; 600]; - let mut rng = SmallRng::from_entropy(); + let mut rng = StdRng::from_entropy(); for len in (2..25).chain(large_range) { let v = &mut v[0..len]; @@ -1237,11 +1237,11 @@ fn sort_unstable() { #[cfg(not(miri))] // Miri is too slow fn partition_at_index() { use core::cmp::Ordering::{Equal, Greater, Less}; - use rand::rngs::SmallRng; + use rand::rngs::StdRng; use rand::seq::SliceRandom; - use rand::{FromEntropy, Rng}; + use rand::{SeedableRng, Rng}; - let mut rng = SmallRng::from_entropy(); + let mut rng = StdRng::from_entropy(); for len in (2..21).chain(500..501) { let mut orig = vec![0; len]; From 39185dd398644a184989c75e7cb34ab62cb871eb Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 5 Aug 2019 11:23:06 +0200 Subject: [PATCH 3/8] update getrandom --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 797a0a5fe840d..3eb3c498ea4e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1050,7 +1050,7 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2246,7 +2246,7 @@ name = "rand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2286,7 +2286,7 @@ name = "rand_core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4446,7 +4446,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum fwdansi 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34dd4c507af68d37ffef962063dfa1944ce0dd4d5b82043dbab1dabe088610c3" "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" "checksum getopts 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)" = "72327b15c228bfe31f1390f93dd5e9279587f0463836393c9df719ce62a3e450" -"checksum getrandom 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8e190892c840661957ba9f32dacfb3eb405e657f9f9f60485605f0bb37d6f8" +"checksum getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "34f33de6f0ae7c9cb5e574502a562e2b512799e32abb801cd1e79ad952b62b49" "checksum git2 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8cb400360e8a4d61b10e648285bbfa919bbf9519d0d5d5720354456f44349226" "checksum git2-curl 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2293de73491c3dc4174c5949ef53d2cc037b27613f88d72032e3f5237247a7dd" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" From 93cf95bedd0e45d2ec478ca911635d3d2883d932 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Tue, 6 Aug 2019 11:18:12 +0900 Subject: [PATCH 4/8] Update rustfmt to 1.4.4 --- Cargo.lock | 4 ++-- src/tools/rustfmt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 972276bb38149..2069f8276b59a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2501,7 +2501,7 @@ dependencies = [ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-workspace-hack 1.0.0", "rustc_tools_util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustfmt-nightly 1.4.3", + "rustfmt-nightly 1.4.4", "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_ignored 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3286,7 +3286,7 @@ dependencies = [ [[package]] name = "rustfmt-nightly" -version = "1.4.3" +version = "1.4.4" dependencies = [ "annotate-snippets 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/src/tools/rustfmt b/src/tools/rustfmt index 3adfb08afe3cb..0462008de87d2 160000 --- a/src/tools/rustfmt +++ b/src/tools/rustfmt @@ -1 +1 @@ -Subproject commit 3adfb08afe3cb6a8c055e581dea87808464d1381 +Subproject commit 0462008de87d2757e8ef1dc26f2c54dd789a59a8 From 04eee2eca2051d2b10287d87174073b73871d13b Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Tue, 6 Aug 2019 17:39:22 -0700 Subject: [PATCH 5/8] Don't use remap-path-prefix in dep-info files. --- src/librustc_interface/passes.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs index b91c5e403841d..c9d68943b0880 100644 --- a/src/librustc_interface/passes.rs +++ b/src/librustc_interface/passes.rs @@ -661,7 +661,7 @@ fn write_out_deps(compiler: &Compiler, outputs: &OutputFilenames, out_filenames: .iter() .filter(|fmap| fmap.is_real_file()) .filter(|fmap| !fmap.is_imported()) - .map(|fmap| escape_dep_filename(&fmap.name)) + .map(|fmap| escape_dep_filename(&fmap.unmapped_path.as_ref().unwrap_or(&fmap.name))) .collect(); if sess.binary_dep_depinfo() { From 916399070270b31377594d5ed9a8672cb18b939d Mon Sep 17 00:00:00 2001 From: Lzu Tao Date: Thu, 8 Aug 2019 01:53:30 +0000 Subject: [PATCH 6/8] doc: Fix typo in float from bytes methods --- src/libcore/num/f32.rs | 4 ++-- src/libcore/num/f64.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libcore/num/f32.rs b/src/libcore/num/f32.rs index fc2c431ca0f9c..8ff78166a9f2d 100644 --- a/src/libcore/num/f32.rs +++ b/src/libcore/num/f32.rs @@ -536,7 +536,7 @@ impl f32 { Self::from_bits(u32::from_be_bytes(bytes)) } - /// Create a floating point value from its representation as a byte array in big endian. + /// Create a floating point value from its representation as a byte array in little endian. /// /// # Examples /// @@ -551,7 +551,7 @@ impl f32 { Self::from_bits(u32::from_le_bytes(bytes)) } - /// Create a floating point value from its representation as a byte array in big endian. + /// Create a floating point value from its representation as a byte array in native endian. /// /// As the target platform's native endianness is used, portable code /// likely wants to use [`from_be_bytes`] or [`from_le_bytes`], as diff --git a/src/libcore/num/f64.rs b/src/libcore/num/f64.rs index 6bd0b6e5c7f77..d45c04f45afc2 100644 --- a/src/libcore/num/f64.rs +++ b/src/libcore/num/f64.rs @@ -549,7 +549,7 @@ impl f64 { Self::from_bits(u64::from_be_bytes(bytes)) } - /// Create a floating point value from its representation as a byte array in big endian. + /// Create a floating point value from its representation as a byte array in little endian. /// /// # Examples /// @@ -564,7 +564,7 @@ impl f64 { Self::from_bits(u64::from_le_bytes(bytes)) } - /// Create a floating point value from its representation as a byte array in big endian. + /// Create a floating point value from its representation as a byte array in native endian. /// /// As the target platform's native endianness is used, portable code /// likely wants to use [`from_be_bytes`] or [`from_le_bytes`], as From e2b3543eabafb7ca143445b02c36ff7e412445b1 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Thu, 8 Aug 2019 13:38:23 +0900 Subject: [PATCH 7/8] Return early to avoid failing assertion --- src/librustc_lint/types.rs | 4 +++- src/test/ui/issues/issue-63364.rs | 10 ++++++++++ src/test/ui/issues/issue-63364.stderr | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/issues/issue-63364.rs create mode 100644 src/test/ui/issues/issue-63364.stderr diff --git a/src/librustc_lint/types.rs b/src/librustc_lint/types.rs index fdfc6f68590a4..e86230437f277 100644 --- a/src/librustc_lint/types.rs +++ b/src/librustc_lint/types.rs @@ -73,7 +73,9 @@ fn lint_overflowing_range_endpoint<'a, 'tcx>( // We only want to handle exclusive (`..`) ranges, // which are represented as `ExprKind::Struct`. if let ExprKind::Struct(_, eps, _) = &parent_expr.node { - debug_assert_eq!(eps.len(), 2); + if eps.len() != 2 { + return false; + } // We can suggest using an inclusive range // (`..=`) instead only if it is the `end` that is // overflowing and only by 1. diff --git a/src/test/ui/issues/issue-63364.rs b/src/test/ui/issues/issue-63364.rs new file mode 100644 index 0000000000000..5223267a69a49 --- /dev/null +++ b/src/test/ui/issues/issue-63364.rs @@ -0,0 +1,10 @@ +fn part(_: u16) -> u32 { + 1 +} + +fn main() { + for n in 100_000.. { + //~^ ERROR: literal out of range for `u16` + let _ = part(n); + } +} diff --git a/src/test/ui/issues/issue-63364.stderr b/src/test/ui/issues/issue-63364.stderr new file mode 100644 index 0000000000000..60ff318f35a1c --- /dev/null +++ b/src/test/ui/issues/issue-63364.stderr @@ -0,0 +1,10 @@ +error: literal out of range for `u16` + --> $DIR/issue-63364.rs:6:14 + | +LL | for n in 100_000.. { + | ^^^^^^^ + | + = note: `#[deny(overflowing_literals)]` on by default + +error: aborting due to previous error + From 403292db355c409d01c2e65bc6c1fe14cb35922b Mon Sep 17 00:00:00 2001 From: SOFe Date: Thu, 8 Aug 2019 18:05:10 +0800 Subject: [PATCH 8/8] Improved documentation for compile_error!() Fixes #63375 --- src/libcore/macros.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs index 37cc71bff62b4..09d2331b60fed 100644 --- a/src/libcore/macros.rs +++ b/src/libcore/macros.rs @@ -680,7 +680,7 @@ pub(crate) mod builtin { /// /// This macro should be used when a crate uses a conditional compilation strategy to provide /// better error messages for erroneous conditions. It's the compiler-level form of [`panic!`], - /// which emits an error at *runtime*, rather than during compilation. + /// but emits an error during *compilation* rather than at *runtime*. /// /// # Examples ///