summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakayuki Maeda <takoyaki0316@gmail.com>2021-03-13 17:36:04 +0900
committerTakayuki Maeda <takoyaki0316@gmail.com>2021-03-18 00:49:50 +0900
commitc07c046b317bf9a75b04e97c37396436351d80ab (patch)
tree858839164c0b3e0d84c80d4605bffcacc45dcf20
parent058d8c878ab51ccd65e636456207b3d63ee532b5 (diff)
downloadrust-c07c046b317bf9a75b04e97c37396436351d80ab.tar.gz
refactor string_extend_chars: return when obj type is not string
-rw-r--r--clippy_lints/src/methods/string_extend_chars.rs57
1 files changed, 29 insertions, 28 deletions
diff --git a/clippy_lints/src/methods/string_extend_chars.rs b/clippy_lints/src/methods/string_extend_chars.rs
index 52b26a36fe3..5c688ac5621 100644
--- a/clippy_lints/src/methods/string_extend_chars.rs
+++ b/clippy_lints/src/methods/string_extend_chars.rs
@@ -12,34 +12,35 @@ use super::STRING_EXTEND_CHARS;
pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, args: &[hir::Expr<'_>]) {
let obj_ty = cx.typeck_results().expr_ty(&args[0]).peel_refs();
- if is_type_diagnostic_item(cx, obj_ty, sym::string_type) {
- let arg = &args[1];
- if let Some(arglists) = method_chain_args(arg, &["chars"]) {
- let target = &arglists[0][0];
- let self_ty = cx.typeck_results().expr_ty(target).peel_refs();
- let ref_str = if *self_ty.kind() == ty::Str {
- ""
- } else if is_type_diagnostic_item(cx, self_ty, sym::string_type) {
- "&"
- } else {
- return;
- };
+ if !is_type_diagnostic_item(cx, obj_ty, sym::string_type) {
+ return;
+ }
+ let arg = &args[1];
+ if let Some(arglists) = method_chain_args(arg, &["chars"]) {
+ let target = &arglists[0][0];
+ let self_ty = cx.typeck_results().expr_ty(target).peel_refs();
+ let ref_str = if *self_ty.kind() == ty::Str {
+ ""
+ } else if is_type_diagnostic_item(cx, self_ty, sym::string_type) {
+ "&"
+ } else {
+ return;
+ };
- let mut applicability = Applicability::MachineApplicable;
- span_lint_and_sugg(
- cx,
- STRING_EXTEND_CHARS,
- expr.span,
- "calling `.extend(_.chars())`",
- "try this",
- format!(
- "{}.push_str({}{})",
- snippet_with_applicability(cx, args[0].span, "..", &mut applicability),
- ref_str,
- snippet_with_applicability(cx, target.span, "..", &mut applicability)
- ),
- applicability,
- );
- }
+ let mut applicability = Applicability::MachineApplicable;
+ span_lint_and_sugg(
+ cx,
+ STRING_EXTEND_CHARS,
+ expr.span,
+ "calling `.extend(_.chars())`",
+ "try this",
+ format!(
+ "{}.push_str({}{})",
+ snippet_with_applicability(cx, args[0].span, "..", &mut applicability),
+ ref_str,
+ snippet_with_applicability(cx, target.span, "..", &mut applicability)
+ ),
+ applicability,
+ );
}
}