Auto merge of #13273 - alex-semenyuk:assigning_clones_disable_for_test, r=blyxyas

Disable assigning_clones for tests

Close: #12752
As mentioned at #12752 when a test struct is initialized with some default string, this inverts the order of assignee/assignment and makes a bit harder to read/write code

changelog: [`assigning_clones.rs`]: disable assigning_clones for tests
This commit is contained in:
bors 2024-08-18 02:15:36 +00:00
commit 233b5f2083
3 changed files with 42 additions and 1 deletions

View File

@ -3,7 +3,7 @@
use clippy_utils::diagnostics::span_lint_and_then;
use clippy_utils::mir::{enclosing_mir, PossibleBorrowerMap};
use clippy_utils::sugg::Sugg;
use clippy_utils::{is_diag_trait_item, last_path_segment, local_is_initialized, path_to_local};
use clippy_utils::{is_diag_trait_item, is_in_test, last_path_segment, local_is_initialized, path_to_local};
use rustc_errors::Applicability;
use rustc_hir::{self as hir, Expr, ExprKind};
use rustc_lint::{LateContext, LateLintPass};
@ -118,6 +118,7 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, e: &'tcx Expr<'_>) {
}
)
&& !clone_source_borrows_from_dest(cx, lhs, rhs.span)
&& !is_in_test(cx.tcx, e.hir_id)
{
span_lint_and_then(
cx,

View File

@ -396,3 +396,23 @@ impl<T: Clone> Clone for DerefWrapperWithClone<T> {
*self = Self(source.0.clone());
}
}
#[cfg(test)]
mod test {
#[derive(Default)]
struct Data {
field: String,
}
fn test_data() -> Data {
Data {
field: "default_value".to_string(),
}
}
#[test]
fn test() {
let mut data = test_data();
data.field = "override_value".to_owned();
}
}

View File

@ -396,3 +396,23 @@ fn clone_from(&mut self, source: &Self) {
*self = Self(source.0.clone());
}
}
#[cfg(test)]
mod test {
#[derive(Default)]
struct Data {
field: String,
}
fn test_data() -> Data {
Data {
field: "default_value".to_string(),
}
}
#[test]
fn test() {
let mut data = test_data();
data.field = "override_value".to_owned();
}
}