Skip to content

Commit 805aa47

Browse files
committed
move single_char_push_string to its own module
1 parent 8006dab commit 805aa47

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

clippy_lints/src/methods/mod.rs

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ mod ok_expect;
2121
mod option_as_ref_deref;
2222
mod option_map_unwrap_or;
2323
mod single_char_insert_string;
24+
mod single_char_push_string;
2425
mod skip_while_next;
2526
mod string_extend_chars;
2627
mod suspicious_map;
@@ -1778,7 +1779,7 @@ impl<'tcx> LateLintPass<'tcx> for Methods {
17781779

17791780
if let Some(fn_def_id) = cx.typeck_results().type_dependent_def_id(expr.hir_id) {
17801781
if match_def_path(cx, fn_def_id, &paths::PUSH_STR) {
1781-
lint_single_char_push_string(cx, expr, args);
1782+
single_char_push_string::check(cx, expr, args);
17821783
} else if match_def_path(cx, fn_def_id, &paths::INSERT_STR) {
17831784
single_char_insert_string::check(cx, expr, args);
17841785
}
@@ -3217,25 +3218,6 @@ fn lint_single_char_pattern(cx: &LateContext<'_>, _expr: &hir::Expr<'_>, arg: &h
32173218
}
32183219
}
32193220

3220-
/// lint for length-1 `str`s as argument for `push_str`
3221-
fn lint_single_char_push_string(cx: &LateContext<'_>, expr: &hir::Expr<'_>, args: &[hir::Expr<'_>]) {
3222-
let mut applicability = Applicability::MachineApplicable;
3223-
if let Some(extension_string) = get_hint_if_single_char_arg(cx, &args[1], &mut applicability) {
3224-
let base_string_snippet =
3225-
snippet_with_applicability(cx, args[0].span.source_callsite(), "..", &mut applicability);
3226-
let sugg = format!("{}.push({})", base_string_snippet, extension_string);
3227-
span_lint_and_sugg(
3228-
cx,
3229-
SINGLE_CHAR_ADD_STR,
3230-
expr.span,
3231-
"calling `push_str()` using a single-character string literal",
3232-
"consider using `push` with a character literal",
3233-
sugg,
3234-
applicability,
3235-
);
3236-
}
3237-
}
3238-
32393221
/// Checks for the `USELESS_ASREF` lint.
32403222
fn lint_asref(cx: &LateContext<'_>, expr: &hir::Expr<'_>, call_name: &str, as_ref_args: &[hir::Expr<'_>]) {
32413223
// when we get here, we've already checked that the call name is "as_ref" or "as_mut"
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use crate::methods::get_hint_if_single_char_arg;
2+
use crate::utils::{snippet_with_applicability, span_lint_and_sugg};
3+
use rustc_errors::Applicability;
4+
use rustc_hir as hir;
5+
use rustc_lint::LateContext;
6+
7+
use super::SINGLE_CHAR_ADD_STR;
8+
9+
/// lint for length-1 `str`s as argument for `push_str`
10+
pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, args: &[hir::Expr<'_>]) {
11+
let mut applicability = Applicability::MachineApplicable;
12+
if let Some(extension_string) = get_hint_if_single_char_arg(cx, &args[1], &mut applicability) {
13+
let base_string_snippet =
14+
snippet_with_applicability(cx, args[0].span.source_callsite(), "..", &mut applicability);
15+
let sugg = format!("{}.push({})", base_string_snippet, extension_string);
16+
span_lint_and_sugg(
17+
cx,
18+
SINGLE_CHAR_ADD_STR,
19+
expr.span,
20+
"calling `push_str()` using a single-character string literal",
21+
"consider using `push` with a character literal",
22+
sugg,
23+
applicability,
24+
);
25+
}
26+
}

0 commit comments

Comments
 (0)