diff options
| author | roife <roifewu@gmail.com> | 2024-02-03 00:50:20 +0800 |
|---|---|---|
| committer | roife <roifewu@gmail.com> | 2024-02-03 00:50:20 +0800 |
| commit | 015ac1095417a61f293ca46b7f320ac935176c83 (patch) | |
| tree | 8b8f319558db89141f4d7195782bb3a0adab619f | |
| parent | e83c7d49dbc18112bfaa7197a87145a99a9570fc (diff) | |
| download | rust-015ac1095417a61f293ca46b7f320ac935176c83.tar.gz rust-015ac1095417a61f293ca46b7f320ac935176c83.zip | |
Refactor machine_applicable_sugg in unnecessary_fallible_conversions
| -rw-r--r-- | clippy_lints/src/methods/unnecessary_fallible_conversions.rs | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/clippy_lints/src/methods/unnecessary_fallible_conversions.rs b/clippy_lints/src/methods/unnecessary_fallible_conversions.rs index 42ad700a574..72bd8f7e000 100644 --- a/clippy_lints/src/methods/unnecessary_fallible_conversions.rs +++ b/clippy_lints/src/methods/unnecessary_fallible_conversions.rs @@ -34,6 +34,7 @@ impl FunctionKind { if parent_unwrap_call.is_none() { return Applicability::Unspecified; } + match &self { FunctionKind::TryFromFunction(None) | FunctionKind::TryIntoFunction(None) => Applicability::Unspecified, _ => Applicability::MachineApplicable, @@ -41,30 +42,36 @@ impl FunctionKind { } fn default_sugg(&self, primary_span: Span) -> Vec<(Span, String)> { - match *self { - FunctionKind::TryFromFunction(_) => vec![(primary_span, String::from("From::from"))], - FunctionKind::TryIntoFunction(_) => vec![(primary_span, String::from("Into::into"))], - FunctionKind::TryIntoMethod => vec![(primary_span, String::from("into"))], - } + let replacement = match *self { + FunctionKind::TryFromFunction(_) => "From::from", + FunctionKind::TryIntoFunction(_) => "Into::into", + FunctionKind::TryIntoMethod => "into", + }; + + vec![(primary_span, String::from(replacement))] } fn machine_applicable_sugg(&self, primary_span: Span, unwrap_span: Span) -> Vec<(Span, String)> { + use FunctionKind::*; + use SpansKind::*; + + let (trait_name, fn_name) = { + let (a, b) = match self { + TryFromFunction(_) => ("From", "from"), + TryIntoFunction(_) | TryIntoMethod => ("Into", "into"), + }; + (a.to_string(), b.to_string()) + }; + let mut sugg = match *self { - FunctionKind::TryFromFunction(Some(spans)) => match spans { - SpansKind::TraitFn { trait_span, fn_span } => { - vec![(trait_span, String::from("From")), (fn_span, String::from("from"))] - }, - SpansKind::Fn { fn_span } => vec![(fn_span, String::from("from"))], + TryFromFunction(Some(spans)) | TryIntoFunction(Some(spans)) => match spans { + TraitFn { trait_span, fn_span } => vec![(trait_span, trait_name), (fn_span, fn_name)], + Fn { fn_span } => vec![(fn_span, fn_name)], }, - FunctionKind::TryIntoFunction(Some(spans)) => match spans { - SpansKind::TraitFn { trait_span, fn_span } => { - vec![(trait_span, String::from("Into")), (fn_span, String::from("into"))] - }, - SpansKind::Fn { fn_span } => vec![(fn_span, String::from("into"))], - }, - FunctionKind::TryIntoMethod => vec![(primary_span, String::from("into"))], + TryIntoMethod => vec![(primary_span, fn_name)], _ => unreachable!(), }; + sugg.push((unwrap_span, String::new())); sugg } |
