- Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
L-suggestionLint: Improving, adding or fixing lint suggestionsLint: Improving, adding or fixing lint suggestions
Description
Using the following flags
--force-warn clippy::clone-on-ref-ptr
this code:
//@ run-pass #![allow(unused_must_use)] #![allow(deprecated)] //@ needs-threads //@ needs-subprocess use std::{env, fmt, process, sync, thread}; struct SlowFmt(u32); impl fmt::Debug for SlowFmt { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { thread::sleep_ms(3); self.0.fmt(f) } } fn do_print(x: u32) { let x = SlowFmt(x); println!("{:?}{:?}{:?}{:?}{:?}", x, x, x, x, x); } fn main(){ if env::args().count() == 2 { let barrier = sync::Arc::new(sync::Barrier::new(2)); let tbarrier = barrier.clone(); let t = thread::spawn(move || { tbarrier.wait(); do_print(1); }); barrier.wait(); do_print(2); t.join(); } else { let this = env::args().next().unwrap(); let output = process::Command::new(this).arg("-").output().unwrap(); for line in String::from_utf8(output.stdout).unwrap().lines() { match line.chars().next().unwrap() { '1' => assert_eq!(line, "11111"), '2' => assert_eq!(line, "22222"), chr => panic!("unexpected character {:?}", chr) } } } }
caused the following diagnostics:
Checking _atomic-print v0.1.0 (/tmp/icemaker_global_tempdir.ROAms2Xd0g8l/icemaker_clippyfix_tempdir.UiIt7ujO1kHB/_atomic-print) warning: using `.clone()` on a ref-counted pointer --> src/main.rs:26:24 | 26 | let tbarrier = barrier.clone(); | ^^^^^^^^^^^^^^^ help: try: `Arc::<std::sync::Barrier>::clone(&barrier)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_ref_ptr = note: requested on the command line with `--force-warn clippy::clone-on-ref-ptr` warning: `_atomic-print` (bin "_atomic-print") generated 1 warning Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.49s
However after applying these diagnostics, the resulting code:
//@ run-pass #![allow(unused_must_use)] #![allow(deprecated)] //@ needs-threads //@ needs-subprocess use std::{env, fmt, process, sync, thread}; struct SlowFmt(u32); impl fmt::Debug for SlowFmt { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { thread::sleep_ms(3); self.0.fmt(f) } } fn do_print(x: u32) { let x = SlowFmt(x); println!("{:?}{:?}{:?}{:?}{:?}", x, x, x, x, x); } fn main(){ if env::args().count() == 2 { let barrier = sync::Arc::new(sync::Barrier::new(2)); let tbarrier = Arc::<std::sync::Barrier>::clone(&barrier); let t = thread::spawn(move || { tbarrier.wait(); do_print(1); }); barrier.wait(); do_print(2); t.join(); } else { let this = env::args().next().unwrap(); let output = process::Command::new(this).arg("-").output().unwrap(); for line in String::from_utf8(output.stdout).unwrap().lines() { match line.chars().next().unwrap() { '1' => assert_eq!(line, "11111"), '2' => assert_eq!(line, "22222"), chr => panic!("unexpected character {:?}", chr) } } } }
no longer compiled:
Checking _atomic-print v0.1.0 (/tmp/icemaker_global_tempdir.ROAms2Xd0g8l/icemaker_clippyfix_tempdir.UiIt7ujO1kHB/_atomic-print) warning: error applying suggestions to `src/main.rs` The full error message was: > cannot replace slice of data that was already replaced This likely indicates a bug in either rustc or cargo itself, and we would appreciate a bug report! You're likely to see a number of compiler warnings after this message which cargo attempted to fix but failed. If you could open an issue at https://github.com/rust-lang/rust-clippy/issues quoting the full output of this command we'd be very appreciative! Note that you may be able to make some more progress in the near-term fixing code with the `--broken-code` flag warning: failed to automatically apply fixes suggested by rustc to crate `_atomic_print` after fixes were automatically applied the compiler reported errors within these files: * src/main.rs This likely indicates a bug in either rustc or cargo itself, and we would appreciate a bug report! You're likely to see a number of compiler warnings after this message which cargo attempted to fix but failed. If you could open an issue at https://github.com/rust-lang/rust-clippy/issues quoting the full output of this command we'd be very appreciative! Note that you may be able to make some more progress in the near-term fixing code with the `--broken-code` flag The following errors were reported: error[E0433]: failed to resolve: use of undeclared type `Arc` --> src/main.rs:26:24 | 26 | let tbarrier = Arc::<std::sync::Barrier>::clone(&barrier); | ^^^ use of undeclared type `Arc` | help: consider importing one of these structs | 8 + use crate::sync::Arc; | 8 + use std::sync::Arc; | error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0433`. Original diagnostics will follow. error[E0433]: failed to resolve: use of undeclared type `Arc` --> src/main.rs:26:24 | 26 | let tbarrier = Arc::<std::sync::Barrier>::clone(&barrier); | ^^^ use of undeclared type `Arc` | help: consider importing one of these structs | 8 + use crate::sync::Arc; | 8 + use std::sync::Arc; | For more information about this error, try `rustc --explain E0433`. error: could not compile `_atomic-print` (bin "_atomic-print" test) due to 1 previous error warning: build failed, waiting for other jobs to finish... warning: error applying suggestions to `src/main.rs` The full error message was: > cannot replace slice of data that was already replaced This likely indicates a bug in either rustc or cargo itself, and we would appreciate a bug report! You're likely to see a number of compiler warnings after this message which cargo attempted to fix but failed. If you could open an issue at https://github.com/rust-lang/rust-clippy/issues quoting the full output of this command we'd be very appreciative! Note that you may be able to make some more progress in the near-term fixing code with the `--broken-code` flag warning: failed to automatically apply fixes suggested by rustc to crate `_atomic_print` after fixes were automatically applied the compiler reported errors within these files: * src/main.rs This likely indicates a bug in either rustc or cargo itself, and we would appreciate a bug report! You're likely to see a number of compiler warnings after this message which cargo attempted to fix but failed. If you could open an issue at https://github.com/rust-lang/rust-clippy/issues quoting the full output of this command we'd be very appreciative! Note that you may be able to make some more progress in the near-term fixing code with the `--broken-code` flag The following errors were reported: error[E0433]: failed to resolve: use of undeclared type `Arc` --> src/main.rs:26:24 | 26 | let tbarrier = Arc::<std::sync::Barrier>::clone(&barrier); | ^^^ use of undeclared type `Arc` | help: consider importing one of these structs | 8 + use crate::sync::Arc; | 8 + use std::sync::Arc; | error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0433`. Original diagnostics will follow. error: could not compile `_atomic-print` (bin "_atomic-print") due to 1 previous error
Version:
rustc 1.90.0-nightly (855e0fe46 2025-07-11) binary: rustc commit-hash: 855e0fe46e68d94e9f6147531b75ac2d488c548e commit-date: 2025-07-11 host: x86_64-unknown-linux-gnu release: 1.90.0-nightly LLVM version: 20.1.7
Metadata
Metadata
Assignees
Labels
L-suggestionLint: Improving, adding or fixing lint suggestionsLint: Improving, adding or fixing lint suggestions