Skip to content

Rollup of 7 pull requests - #101092

Closed
Dylan-DPC wants to merge 37 commits into
rust-lang:masterfrom
Dylan-DPC:rollup-hzcv70b
Closed

Rollup of 7 pull requests#101092
Dylan-DPC wants to merge 37 commits into
rust-lang:masterfrom
Dylan-DPC:rollup-hzcv70b

Conversation

@Dylan-DPC

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

joshtriplettand others added 30 commits July 12, 2022 21:30
We have `File::create` for creating a file or opening an existing file,
but the secure way to guarantee creating a new file requires a longhand
invocation via `OpenOptions`.
Add `File::create_new` to handle this case, to make it easier for people
to do secure file creation.
I refactored the code:
- Removed handling of methods, as it felt entirely unnecessary
- Removed clippy utils (obviously...)
- Used some shiny compiler features
(let-else is very handy for lints 👀)
- I also renamed the lint to `for_loop_over_fallibles` (note: no `s`).
I'm not sure what's the naming convention here, so maybe I'm wrong.
if the iterator is used after the loop, we need to use `.by_ref()`
The loop could contain `break;` that won't work with an `if let`
Add a `File::create_new` constructor
We have `File::create` for creating a file or opening an existing file,
but the secure way to guarantee creating a new file requires a longhand
invocation via `OpenOptions`.
Add `File::create_new` to handle this case, to make it easier for people
to do secure file creation.
…alfJung
Strengthen invalid_value lint to forbid uninit primitives, adjust docs to say that's UB
For context: rust-lang#66151 (comment)
This does not make it a FCW, but it does explicitly state in the docs that uninit integers are UB.
This also doesn't affect any runtime behavior, uninit u32's will still successfully be created through mem::uninitialized.
Uplift `clippy::for_loops_over_fallibles` lint into rustc
This PR, as the title suggests, uplifts [`clippy::for_loops_over_fallibles`] lint into rustc. This lint warns for code like this:
```rust
for _ in Some(1) {}
for _ in Ok::<_, ()>(1) {}
```
i.e. directly iterating over `Option` and `Result` using `for` loop.
There are a number of suggestions that this PR adds (on top of what clippy suggested):
1. If the argument (? is there a better name for that expression) of a `for` loop is a `.next()` call, then we can suggest removing it (or rather replacing with `.by_ref()` to allow iterator being used later)
```rust
for _ in iter.next() {}
// turns into
for _ in iter.by_ref() {}
```
2. (otherwise) We can suggest using `while let`, this is useful for non-iterator, iterator-like things like [async] channels
```rust
for _ in rx.recv() {}
// turns into
while let Some(_) = rx.recv() {}
```
3. If the argument type is `Result<impl IntoIterator, _>` and the body has a `Result<_, _>` type, we can suggest using `?`
```rust
for _ in f() {}
// turns into
for _ in f()? {}
```
4. To preserve the original behavior and clear intent, we can suggest using `if let`
```rust
for _ in f() {}
// turns into
if let Some(_) = f() {}
```
(P.S. `Some` and `Ok` are interchangeable depending on the type)
I still feel that the lint wording/look is somewhat off, so I'll be happy to hear suggestions (on how to improve suggestions :D)!
Resolvesrust-lang#99272
[`clippy::for_loops_over_fallibles`]: https://rust-lang.github.io/rust-clippy/master/index.html#for_loops_over_fallibles
…g, r=JohnTitor
Stabilize `std::io::read_to_string`
Closesrust-lang#80218. 🎉
**Blocked on FCP finishing**
…tch-err, r=oli-obk
Improve const mismatch `FulfillmentError`
Fixesrust-lang#100414
…, r=thomcc
Use `DisplayBuffer` for socket addresses.
Continuation of rust-lang#100625 for socket addresses.
Renames `net::addr` to `net::addr::socket`, `net::ip` to `net::addr::ip` and `net::ip::display_buffer::IpDisplayBuffer` to `net::addr::display_buffer::DisplayBuffer`.
…ds, r=spastorino
Do not report too many expr field candidates
When considering "this expressions' field has a {field/method}" suggestions:
1. Don't report methods that are out of scope
2. Use `span_suggestions` instead of reporting each field candidate, which caps the number of suggestions to 4
4. Blacklist some common traits like `Clone` and `Deref`
Fixesrust-lang#100894
@rustbotrustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Aug 27, 2022
@Dylan-DPC

Copy link
Copy Markdown
MemberAuthor

@bors r+ rollup=never p=5

@bors

bors commented Aug 27, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 11905c6 has been approved by Dylan-DPC

It is now in the queue for this repository.

@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Aug 27, 2022
@bors

bors commented Aug 27, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 11905c6 with merge 2bad1a28bafb628d6cd324046f2e798fd366961d...

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu-tools failed! Check out the build log: (web)(plain)

Click to see the possible cause of the failure (guessed by this bot)
 IMAGE: x86_64-gnu-tools
##[endgroup]
From https://github.com/rust-lang/rust
* branch master -> FETCH_HEAD
Searching for toolstate changes between 3b3f3b72c5f6ebee82a0530ae40284926bb193b3 and 14739b3c5712a9d0014e86c455cc00a41c604332
Clippy or rustfmt subtrees were updated
##[group]Run src/ci/scripts/verify-channel.sh
src/ci/scripts/verify-channel.sh
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
---
---- compile_test stdout ----
diff of stderr:
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | if let V4(_) = &ipaddr {}
- | -------^^^^^---------- help: try this: `if ipaddr.is_ipv4()`
- |
- = note: `-D clippy::redundant-pattern-matching` implied by `-D warnings`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | if let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- | -------^^^^^-------------------------- help: try this: `if V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | if let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- | -------^^^^^-------------------------- help: try this: `if V6(Ipv6Addr::LOCALHOST).is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | while let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- | ----------^^^^^-------------------------- help: try this: `while V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | while let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- | ----------^^^^^-------------------------- help: try this: `while V6(Ipv6Addr::LOCALHOST).is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | / match V4(Ipv4Addr::LOCALHOST) {
-LL | | V4(_) => true,
-LL | | V6(_) => false,
-LL | | };
- | |_____^ help: try this: `V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | / match V4(Ipv4Addr::LOCALHOST) {
-LL | | V4(_) => false,
-LL | | V6(_) => true,
-LL | | };
- | |_____^ help: try this: `V4(Ipv4Addr::LOCALHOST).is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | / match V6(Ipv6Addr::LOCALHOST) {
-LL | | V4(_) => false,
-LL | | V6(_) => true,
-LL | | };
- | |_____^ help: try this: `V6(Ipv6Addr::LOCALHOST).is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | / match V6(Ipv6Addr::LOCALHOST) {
-LL | | V4(_) => true,
-LL | | V6(_) => false,
-LL | | };
- | |_____^ help: try this: `V6(Ipv6Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | let _ = if let V4(_) = V4(Ipv4Addr::LOCALHOST) {
- | -------^^^^^-------------------------- help: try this: `if V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | let _ = if let V4(_) = gen_ipaddr() {
- | -------^^^^^--------------- help: try this: `if gen_ipaddr().is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | } else if let V6(_) = gen_ipaddr() {
- | -------^^^^^--------------- help: try this: `if gen_ipaddr().is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | if let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- | -------^^^^^-------------------------- help: try this: `if V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | if let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- | -------^^^^^-------------------------- help: try this: `if V6(Ipv6Addr::LOCALHOST).is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | while let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- | ----------^^^^^-------------------------- help: try this: `while V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | while let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- | ----------^^^^^-------------------------- help: try this: `while V6(Ipv6Addr::LOCALHOST).is_ipv6()`
-
-error: redundant pattern matching, consider using `is_ipv4()`
- |
- |
-LL | / match V4(Ipv4Addr::LOCALHOST) {
-LL | | V4(_) => true,
-LL | | V6(_) => false,
-LL | | };
- | |_____^ help: try this: `V4(Ipv4Addr::LOCALHOST).is_ipv4()`
-
-error: redundant pattern matching, consider using `is_ipv6()`
- |
- |
-LL | / match V6(Ipv6Addr::LOCALHOST) {
-LL | | V4(_) => false,
-LL | | V6(_) => true,
-LL | | };
- | |_____^ help: try this: `V6(Ipv6Addr::LOCALHOST).is_ipv6()`
-error: aborting due to 18 previous errors
-
-
The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui/redundant_pattern_matching_ipaddr.stage-id.stderr
diff of fixed:
// run-rustfix
#![warn(clippy::all)]
#![warn(clippy::redundant_pattern_matching)]
#![allow(unused_must_use, clippy::needless_bool, clippy::match_like_matches_macro)]
use std::net::{
use std::net::{
IpAddr::{self, V4, V6},
Ipv4Addr, Ipv6Addr,
fn main() {
fn main() {
let ipaddr: IpAddr = V4(Ipv4Addr::LOCALHOST);
- if ipaddr.is_ipv4() {}
+ if let V4(_) = &ipaddr {}
- if V4(Ipv4Addr::LOCALHOST).is_ipv4() {}
+ if let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- if V6(Ipv6Addr::LOCALHOST).is_ipv6() {}
+ if let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- while V4(Ipv4Addr::LOCALHOST).is_ipv4() {}
+ while let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- while V6(Ipv6Addr::LOCALHOST).is_ipv6() {}
+ while let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
if V4(Ipv4Addr::LOCALHOST).is_ipv4() {}
if V6(Ipv6Addr::LOCALHOST).is_ipv6() {}
if let V4(ipaddr) = V4(Ipv4Addr::LOCALHOST) {
println!("{}", ipaddr);
- V4(Ipv4Addr::LOCALHOST).is_ipv4();
+ match V4(Ipv4Addr::LOCALHOST) {
+ V4(_) => true,
+ V6(_) => false,
- V4(Ipv4Addr::LOCALHOST).is_ipv6();
+ match V4(Ipv4Addr::LOCALHOST) {
+ V4(_) => false,
+ V6(_) => true,
- V6(Ipv6Addr::LOCALHOST).is_ipv6();
+ match V6(Ipv6Addr::LOCALHOST) {
+ V4(_) => false,
+ V6(_) => true,
- V6(Ipv6Addr::LOCALHOST).is_ipv4();
+ match V6(Ipv6Addr::LOCALHOST) {
+ V4(_) => true,
+ V6(_) => false,
- let _ = if V4(Ipv4Addr::LOCALHOST).is_ipv4() {
+ let _ = if let V4(_) = V4(Ipv4Addr::LOCALHOST) {
} else {
false
};
ipaddr_const();
- let _ = if gen_ipaddr().is_ipv4() {
+ let _ = if let V4(_) = gen_ipaddr() {
1
- } else if gen_ipaddr().is_ipv6() {
+ } else if let V6(_) = gen_ipaddr() {
} else {
3
};
}
}
fn gen_ipaddr() -> IpAddr {
V4(Ipv4Addr::LOCALHOST)
const fn ipaddr_const() {
const fn ipaddr_const() {
- if V4(Ipv4Addr::LOCALHOST).is_ipv4() {}
+ if let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- if V6(Ipv6Addr::LOCALHOST).is_ipv6() {}
+ if let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- while V4(Ipv4Addr::LOCALHOST).is_ipv4() {}
+ while let V4(_) = V4(Ipv4Addr::LOCALHOST) {}
- while V6(Ipv6Addr::LOCALHOST).is_ipv6() {}
+ while let V6(_) = V6(Ipv6Addr::LOCALHOST) {}
- V4(Ipv4Addr::LOCALHOST).is_ipv4();
+ match V4(Ipv4Addr::LOCALHOST) {
+ V4(_) => true,
+ V6(_) => false,
- V6(Ipv6Addr::LOCALHOST).is_ipv6();
+ match V6(Ipv6Addr::LOCALHOST) {
+ V4(_) => false,
+ V6(_) => true,
}
The actual fixed differed from the expected fixed.
The actual fixed differed from the expected fixed.
Actual fixed saved to /checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui/redundant_pattern_matching_ipaddr.stage-id.fixed
To only update this specific test, also pass `--test-args redundant_pattern_matching_ipaddr.rs`
error: 2 errors occurred comparing output.
status: exit status: 0
status: exit status: 0
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/clippy-driver" "tests/ui/redundant_pattern_matching_ipaddr.rs" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui/redundant_pattern_matching_ipaddr.stage-id" "-A" "unused" "--emit=metadata" "-Dwarnings" "-Zui-testing" "-L" "dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps" "-L" "dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps" "--extern" "syn=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libsyn-0c795f7a8756f15a.rlib" "--extern" "rustc_semver=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/librustc_semver-963bbd3f89834643.rlib" "--extern" "serde=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libserde-b0e96f2e9d30bd37.rlib" "--extern" "regex=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libregex-7dc368fb32eb8aae.rlib" "--extern" "clippy_utils=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libclippy_utils-56bce9bcc023120a.rlib" "--extern" "if_chain=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libif_chain-03f75cdc6d4d3afc.rlib" "--extern" "quote=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libquote-021aec868151835c.rlib" "--extern" "itertools=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libitertools-cdd893c121eb00e4.rlib" "--extern" "futures=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libfutures-36709515b9cb16b6.rlib" "--extern" "tokio=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libtokio-11c942eb60796e9d.rlib" "--extern" "parking_lot=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libparking_lot-04f014bd62aa87c5.rlib" "--extern" "serde_derive=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps/libserde_derive-507b29393c1a728f.so" "--extern" "clippy_lints=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libclippy_lints-3e103f3c7cb1e342.rlib" "--extern" "derive_new=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps/libderive_new-71205fa4273edf27.so" "--edition=2021" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui/redundant_pattern_matching_ipaddr.stage-id.aux"
------------------------------------------
------------------------------------------
stderr:
---
error: this call for this type may be undefined behavior
--> $DIR/uninit.rs:7:29
|
LL | let _: usize = unsafe { MaybeUninit::uninit().assume_init() };
|
|
= note: `#[deny(clippy::uninit_assumed_init)]` on by default
error: test failed, to rerun pass '--test compile-test'
error: this call for this type may be undefined behavior
--> $DIR/uninit.rs:10:31
|
|
LL | let _: [u8; 0] = unsafe { MaybeUninit::uninit().assume_init() };
error: this call for this type may be undefined behavior
--> $DIR/uninit.rs:25:29
|
|
LL | let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };
-error: aborting due to 3 previous errors
-error: aborting due to 3 previous errors
+error: the type `usize` does not permit being left uninitialized
+ |
+ |
+LL | let _: usize = unsafe { MaybeUninit::uninit().assume_init() };
+ | |
+ | this code causes undefined behavior when executed
+ | this code causes undefined behavior when executed
+ | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
+ |
+ = note: `-D invalid-value` implied by `-D warnings`
+ = note: integers must not be uninitialized
+
+error: the type `usize` does not permit being left uninitialized
+ |
+ |
+LL | let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };
+ | |
+ | this code causes undefined behavior when executed
+ | this code causes undefined behavior when executed
+ | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
+ = note: integers must not be uninitialized
+
+error: aborting due to 5 previous errors
---
To only update this specific test, also pass `--test-args uninit.rs`
error: 1 errors occurred comparing output.
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/clippy-driver" "tests/ui/uninit.rs" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui/uninit.stage-id" "-A" "unused" "--emit=metadata" "-Dwarnings" "-Zui-testing" "-L" "dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps" "-L" "dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps" "--extern" "syn=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libsyn-0c795f7a8756f15a.rlib" "--extern" "rustc_semver=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/librustc_semver-963bbd3f89834643.rlib" "--extern" "serde=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libserde-b0e96f2e9d30bd37.rlib" "--extern" "regex=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libregex-7dc368fb32eb8aae.rlib" "--extern" "clippy_utils=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libclippy_utils-56bce9bcc023120a.rlib" "--extern" "if_chain=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libif_chain-03f75cdc6d4d3afc.rlib" "--extern" "quote=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libquote-021aec868151835c.rlib" "--extern" "itertools=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libitertools-cdd893c121eb00e4.rlib" "--extern" "futures=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libfutures-36709515b9cb16b6.rlib" "--extern" "tokio=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libtokio-11c942eb60796e9d.rlib" "--extern" "parking_lot=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libparking_lot-04f014bd62aa87c5.rlib" "--extern" "serde_derive=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps/libserde_derive-507b29393c1a728f.so" "--extern" "clippy_lints=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libclippy_lints-3e103f3c7cb1e342.rlib" "--extern" "derive_new=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps/libderive_new-71205fa4273edf27.so" "--edition=2021" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/test/ui/uninit.stage-id.aux"
------------------------------------------
------------------------------------------
stderr:
stderr:
------------------------------------------
{"message":"this call for this type may be undefined behavior","code":{"code":"clippy::uninit_assumed_init","explanation":null},"level":"error","spans":[{"file_name":"tests/ui/uninit.rs","byte_start":145,"byte_end":180,"line_start":7,"line_end":7,"column_start":29,"column_end":64,"is_primary":true,"text":[{"text":" let _: usize = unsafe { MaybeUninit::uninit().assume_init() };","highlight_start":29,"highlight_end":64}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[deny(clippy::uninit_assumed_init)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error: this call for this type may be undefined behavior\n --> tests/ui/uninit.rs:7:29\n |\nLL | let _: usize = unsafe { MaybeUninit::uninit().assume_init() };\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n |\n = note: `#[deny(clippy::uninit_assumed_init)]` on by default\n\n"}
{"message":"this call for this type may be undefined behavior","code":{"code":"clippy::uninit_assumed_init","explanation":null},"level":"error","spans":[{"file_name":"tests/ui/uninit.rs","byte_start":265,"byte_end":300,"line_start":10,"line_end":10,"column_start":31,"column_end":66,"is_primary":true,"text":[{"text":" let _: [u8; 0] = unsafe { MaybeUninit::uninit().assume_init() };","highlight_start":31,"highlight_end":66}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error: this call for this type may be undefined behavior\n --> tests/ui/uninit.rs:10:31\n |\nLL | let _: [u8; 0] = unsafe { MaybeUninit::uninit().assume_init() };\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
{"message":"this call for this type may be undefined behavior","code":{"code":"clippy::uninit_assumed_init","explanation":null},"level":"error","spans":[{"file_name":"tests/ui/uninit.rs","byte_start":979,"byte_end":1019,"line_start":25,"line_end":25,"column_start":29,"column_end":69,"is_primary":true,"text":[{"text":" let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };","highlight_start":29,"highlight_end":69}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error: this call for this type may be undefined behavior\n --> tests/ui/uninit.rs:25:29\n |\nLL | let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
{"message":"the type `usize` does not permit being left uninitialized","code":{"code":"invalid_value","explanation":null},"level":"error","spans":[{"file_name":"tests/ui/uninit.rs","byte_start":145,"byte_end":180,"line_start":7,"line_end":7,"column_start":29,"column_end":64,"is_primary":true,"text":[{"text":" let _: usize = unsafe { MaybeUninit::uninit().assume_init() };","highlight_start":29,"highlight_end":64}],"label":"this code causes undefined behavior when executed","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/ui/uninit.rs","byte_start":145,"byte_end":180,"line_start":7,"line_end":7,"column_start":29,"column_end":64,"is_primary":true,"text":[{"text":" let _: usize = unsafe { MaybeUninit::uninit().assume_init() };","highlight_start":29,"highlight_end":64}],"label":"help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`-D invalid-value` implied by `-D warnings`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"integers must not be uninitialized","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error: the type `usize` does not permit being left uninitialized\n --> tests/ui/uninit.rs:7:29\n |\nLL | let _: usize = unsafe { MaybeUninit::uninit().assume_init() };\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | |\n | this code causes undefined behavior when executed\n | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done\n |\n = note: `-D invalid-value` implied by `-D warnings`\n = note: integers must not be uninitialized\n\n"}
{"message":"the type `usize` does not permit being left uninitialized","code":{"code":"invalid_value","explanation":null},"level":"error","spans":[{"file_name":"tests/ui/uninit.rs","byte_start":979,"byte_end":1019,"line_start":25,"line_end":25,"column_start":29,"column_end":69,"is_primary":true,"text":[{"text":" let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };","highlight_start":29,"highlight_end":69}],"label":"this code causes undefined behavior when executed","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"tests/ui/uninit.rs","byte_start":979,"byte_end":1019,"line_start":25,"line_end":25,"column_start":29,"column_end":69,"is_primary":true,"text":[{"text":" let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };","highlight_start":29,"highlight_end":69}],"label":"help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"integers must not be uninitialized","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error: the type `usize` does not permit being left uninitialized\n --> tests/ui/uninit.rs:25:29\n |\nLL | let _: usize = unsafe { mem::MaybeUninit::uninit().assume_init() };\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n | |\n | this code causes undefined behavior when executed\n | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done\n |\n = note: integers must not be uninitialized\n\n"}
------------------------------------------
thread 'compile_test' panicked at 'Some tests failed', /cargo/registry/src/github.com-1ecc6299db9ec823/compiletest_rs-0.8.0/src/lib.rs:111:22

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu failed! Check out the build log: (web)(plain)

Click to see the possible cause of the failure (guessed by this bot)
failures:
---- [ui] src/test/ui/sanitize/memory.rs stdout ----
normalized stderr:
warning: the type `[isize; 32]` does not permit being left uninitialized
|
|
LL | let r = unsafe { MaybeUninit::uninit().assume_init() };
| |
| this code causes undefined behavior when executed
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
= note: `#[warn(invalid_value)]` on by default
= note: integers must not be uninitialized
warning: 1 warning emitted
---
To only update this specific test, also pass `--test-args sanitize/memory.rs`
error: 1 errors occurred comparing output.
status: exit status: 0
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/sanitize/memory.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/sanitize/memory/a" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-Z" "sanitizer=memory" "-Zsanitizer-memory-track-origins" "-O" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/sanitize/memory/auxiliary"
stdout: none
--- stderr -------------------------------
warning: the type `[isize; 32]` does not permit being left uninitialized
|
|
LL | let r = unsafe { MaybeUninit::uninit().assume_init() };
| |
| this code causes undefined behavior when executed
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
= note: `#[warn(invalid_value)]` on by default
= note: integers must not be uninitialized
warning: 1 warning emitted

@bors

bors commented Aug 27, 2022

Copy link
Copy Markdown
Collaborator

💔 Test failed - checks-actions

@borsbors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Aug 27, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollupA PR which is a rollupS-waiting-on-reviewStatus: Awaiting review from the assignee but also interested parties.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@Dylan-DPC@bors@rust-log-analyzer@rustbot@joshtriplett@camelid@WaffleLapkin@reitermarkus@compiler-errors