From 1d067b88a48ae5d1afe15034db60017c2a1cd759 Mon Sep 17 00:00:00 2001
From: Vincent Lafeychine <vincent.lafeychine@proton.me>
Date: Sun, 14 Apr 2024 17:16:28 +0200
Subject: [PATCH] clippy: Fix borrow_deref_ref

---
 rr_frontend/.cargo/config.toml                        |  1 -
 rr_frontend/translation/src/function_body.rs          |  4 ++--
 .../translation/src/spec_parsers/const_attr_parser.rs |  2 +-
 .../translation/src/spec_parsers/crate_attr_parser.rs |  2 +-
 .../translation/src/spec_parsers/enum_spec_parser.rs  |  4 ++--
 rr_frontend/translation/src/spec_parsers/mod.rs       |  4 ++--
 .../src/spec_parsers/module_attr_parser.rs            |  2 +-
 .../src/spec_parsers/struct_spec_parser.rs            |  4 ++--
 .../src/spec_parsers/verbose_function_spec_parser.rs  |  8 ++++----
 rr_frontend/translation/src/utils.rs                  | 11 ++++-------
 10 files changed, 19 insertions(+), 23 deletions(-)

diff --git a/rr_frontend/.cargo/config.toml b/rr_frontend/.cargo/config.toml
index 7a8fb453..6a4464a8 100644
--- a/rr_frontend/.cargo/config.toml
+++ b/rr_frontend/.cargo/config.toml
@@ -21,7 +21,6 @@ rustflags = [
     "-Aunused_variables",
 
     # clippy::complexity
-    "-Aclippy::borrow_deref_ref",
     "-Aclippy::clone_on_copy",
     "-Aclippy::explicit_auto_deref",
     "-Aclippy::extra_unused_lifetimes",
diff --git a/rr_frontend/translation/src/function_body.rs b/rr_frontend/translation/src/function_body.rs
index 886056cc..3826e250 100644
--- a/rr_frontend/translation/src/function_body.rs
+++ b/rr_frontend/translation/src/function_body.rs
@@ -442,7 +442,7 @@ impl<'a, 'def: 'a, 'tcx: 'def> FunctionTranslator<'a, 'def, 'tcx> {
                 // dump graphviz files
                 // color code: red: dying loan, pink: becoming a zombie; green: is zombie
                 if rrconfig::dump_borrowck_info() {
-                    crate::environment::dump_borrowck_info(&*env, &proc.get_id(), &info);
+                    crate::environment::dump_borrowck_info(env, &proc.get_id(), &info);
                 }
 
                 let (tupled_inputs, output, mut universal_lifetimes) =
@@ -637,7 +637,7 @@ impl<'a, 'def: 'a, 'tcx: 'def> FunctionTranslator<'a, 'def, 'tcx> {
                 // dump graphviz files
                 // color code: red: dying loan, pink: becoming a zombie; green: is zombie
                 if rrconfig::dump_borrowck_info() {
-                    crate::environment::dump_borrowck_info(&*env, &proc.get_id(), &info);
+                    crate::environment::dump_borrowck_info(env, &proc.get_id(), &info);
                 }
 
                 let (inputs, output, universal_lifetimes) =
diff --git a/rr_frontend/translation/src/spec_parsers/const_attr_parser.rs b/rr_frontend/translation/src/spec_parsers/const_attr_parser.rs
index 66f9e03b..f4924365 100644
--- a/rr_frontend/translation/src/spec_parsers/const_attr_parser.rs
+++ b/rr_frontend/translation/src/spec_parsers/const_attr_parser.rs
@@ -49,7 +49,7 @@ impl ConstAttrParser for VerboseConstAttrParser {
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-                match &*seg.ident.name.as_str() {
+                match seg.ident.name.as_str() {
                     "name" => {
                         let parsed_name: parse::LitStr = buffer.parse(&meta).map_err(str_err)?;
                         if name.is_some() {
diff --git a/rr_frontend/translation/src/spec_parsers/crate_attr_parser.rs b/rr_frontend/translation/src/spec_parsers/crate_attr_parser.rs
index 561c957d..6604c43b 100644
--- a/rr_frontend/translation/src/spec_parsers/crate_attr_parser.rs
+++ b/rr_frontend/translation/src/spec_parsers/crate_attr_parser.rs
@@ -49,7 +49,7 @@ impl CrateAttrParser for VerboseCrateAttrParser {
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-                match &*seg.ident.name.as_str() {
+                match seg.ident.name.as_str() {
                     "import" => {
                         let path: parse_utils::CoqPath = buffer.parse(&meta).map_err(str_err)?;
                         imports.push(path.into());
diff --git a/rr_frontend/translation/src/spec_parsers/enum_spec_parser.rs b/rr_frontend/translation/src/spec_parsers/enum_spec_parser.rs
index 94f4572e..0780bd62 100644
--- a/rr_frontend/translation/src/spec_parsers/enum_spec_parser.rs
+++ b/rr_frontend/translation/src/spec_parsers/enum_spec_parser.rs
@@ -93,7 +93,7 @@ impl EnumSpecParser for VerboseEnumSpecParser {
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-                match &*seg.ident.name.as_str() {
+                match seg.ident.name.as_str() {
                     "refined_by" => {
                         let ty: parse::LitStr = buffer.parse(&meta).map_err(str_err)?;
                         let (ty, _) = process_coq_literal(ty.value().as_str(), meta);
@@ -116,7 +116,7 @@ impl EnumSpecParser for VerboseEnumSpecParser {
 
                 if let Some(seg) = path_segs.get(1) {
                     let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-                    match &*seg.ident.name.as_str() {
+                    match seg.ident.name.as_str() {
                         "pattern" => {
                             let pat: EnumPattern = buffer.parse(&meta).map_err(str_err)?;
                             pattern = Some(pat);
diff --git a/rr_frontend/translation/src/spec_parsers/mod.rs b/rr_frontend/translation/src/spec_parsers/mod.rs
index 97df909e..982a00b5 100644
--- a/rr_frontend/translation/src/spec_parsers/mod.rs
+++ b/rr_frontend/translation/src/spec_parsers/mod.rs
@@ -30,7 +30,7 @@ pub fn get_export_as_attr(attrs: &[&AttrItem]) -> Result<Vec<String>, String> {
 
         if let Some(seg) = path_segs.get(1) {
             let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-            match &*seg.ident.name.as_str() {
+            match seg.ident.name.as_str() {
                 "export_as" => {
                     let path = RustPath::parse(&buffer, meta).map_err(parse_utils::str_err)?;
                     return Ok(path.path);
@@ -79,7 +79,7 @@ pub fn get_shim_attrs(attrs: &[&AttrItem]) -> Result<ShimAnnot, String> {
 
         if let Some(seg) = path_segs.get(1) {
             let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-            match &*seg.ident.name.as_str() {
+            match seg.ident.name.as_str() {
                 "shim" => {
                     let annot = ShimAnnot::parse(&buffer, meta).map_err(parse_utils::str_err)?;
                     return Ok(annot);
diff --git a/rr_frontend/translation/src/spec_parsers/module_attr_parser.rs b/rr_frontend/translation/src/spec_parsers/module_attr_parser.rs
index 3f4f3286..cdc277c5 100644
--- a/rr_frontend/translation/src/spec_parsers/module_attr_parser.rs
+++ b/rr_frontend/translation/src/spec_parsers/module_attr_parser.rs
@@ -54,7 +54,7 @@ impl ModuleAttrParser for VerboseModuleAttrParser {
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-                match &*seg.ident.name.as_str() {
+                match seg.ident.name.as_str() {
                     "import" => {
                         let path: parse_utils::CoqPath = buffer.parse(&meta).map_err(str_err)?;
                         imports.push(path.into());
diff --git a/rr_frontend/translation/src/spec_parsers/struct_spec_parser.rs b/rr_frontend/translation/src/spec_parsers/struct_spec_parser.rs
index c9c2c279..5ae436dc 100644
--- a/rr_frontend/translation/src/spec_parsers/struct_spec_parser.rs
+++ b/rr_frontend/translation/src/spec_parsers/struct_spec_parser.rs
@@ -208,7 +208,7 @@ impl InvariantSpecParser for VerboseInvariantSpecParser {
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&args.inner_tokens());
-                match &*seg.ident.name.as_str() {
+                match seg.ident.name.as_str() {
                     "refined_by" => {
                         let pat = RfnPattern::parse(&buffer, &meta).map_err(str_err)?;
                         rfn_pat = pat.rfn_pat;
@@ -400,7 +400,7 @@ where
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&args.inner_tokens());
-                match &*seg.ident.name.as_str() {
+                match seg.ident.name.as_str() {
                     "field" => {
                         let mut expect_ty = false;
                         if self.expect_rfn {
diff --git a/rr_frontend/translation/src/spec_parsers/verbose_function_spec_parser.rs b/rr_frontend/translation/src/spec_parsers/verbose_function_spec_parser.rs
index c49568fc..f2f7e0b4 100644
--- a/rr_frontend/translation/src/spec_parsers/verbose_function_spec_parser.rs
+++ b/rr_frontend/translation/src/spec_parsers/verbose_function_spec_parser.rs
@@ -623,7 +623,7 @@ where
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&args.inner_tokens());
-                let name = &*seg.ident.name.as_str();
+                let name = seg.ident.name.as_str();
                 match name {
                     "capture" => {
                         let spec: ClosureCaptureSpec = buffer.parse(&meta).map_err(str_err)?;
@@ -642,7 +642,7 @@ where
 
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
-                let name = &*seg.ident.name.as_str();
+                let name = seg.ident.name.as_str();
 
                 match self.handle_common_attributes(name, &buffer, builder, &lfts) {
                     Ok(b) => {
@@ -686,13 +686,13 @@ where
             if let Some(seg) = path_segs.get(1) {
                 let buffer = parse::ParseBuffer::new(&it.args.inner_tokens());
 
-                match self.handle_common_attributes(&*seg.ident.name.as_str(), &buffer, builder, &lfts) {
+                match self.handle_common_attributes(seg.ident.name.as_str(), &buffer, builder, &lfts) {
                     Ok(b) => {
                         if !b {
                             let meta: &[specs::LiteralTyParam] = builder.get_ty_params();
                             let _meta: ParseMeta = (&meta, &lfts);
 
-                            match &*seg.ident.name.as_str() {
+                            match seg.ident.name.as_str() {
                                 _ => {
                                     info!("ignoring function attribute: {:?}", args);
                                 },
diff --git a/rr_frontend/translation/src/utils.rs b/rr_frontend/translation/src/utils.rs
index 358a6322..ce181fb1 100644
--- a/rr_frontend/translation/src/utils.rs
+++ b/rr_frontend/translation/src/utils.rs
@@ -682,8 +682,7 @@ impl<'tcx> VecPlace<'tcx> {
 /// Any arguments of the attribute are ignored.
 pub fn has_tool_attr(attrs: &[ast::Attribute], name: &str) -> bool {
     attrs.iter().any(|attr| match &attr.kind {
-        ast::AttrKind::Normal(n) => {
-            let na: &rustc_ast::ast::NormalAttr = &(*n);
+        ast::AttrKind::Normal(na) => {
             let segments = &na.item.path.segments;
             segments.len() == 2
                 && segments[0].ident.as_str() == config::spec_hotword().as_str()
@@ -706,8 +705,7 @@ pub fn has_tool_attr_filtered(attrs: &[&ast::AttrItem], name: &str) -> bool {
 /// Check if any attribute starting with `<tool>` is among the attributes.
 pub fn has_any_tool_attr(attrs: &[ast::Attribute]) -> bool {
     attrs.iter().any(|attr| match &attr.kind {
-        ast::AttrKind::Normal(n) => {
-            let na: &rustc_ast::ast::NormalAttr = &(*n);
+        ast::AttrKind::Normal(na) => {
             let segments = &na.item.path.segments;
             segments[0].ident.as_str() == config::spec_hotword().as_str()
         },
@@ -722,8 +720,7 @@ pub fn filter_tool_attrs(attrs: &[ast::Attribute]) -> Vec<&ast::AttrItem> {
         .iter()
         .filter_map(|attr| {
             match attr.kind {
-                ast::AttrKind::Normal(ref n) => {
-                    let na: &rustc_ast::ast::NormalAttr = &*(n);
+                ast::AttrKind::Normal(ref na) => {
                     let it = &na.item;
                     let ref path_segs = it.path.segments;
 
@@ -732,7 +729,7 @@ pub fn filter_tool_attrs(attrs: &[ast::Attribute]) -> Vec<&ast::AttrItem> {
                         return None;
                     }
                     if let Some(seg) = path_segs.get(0) {
-                        if (&*seg.ident.name.as_str()) == &config::spec_hotword() { Some(it) } else { None }
+                        if seg.ident.name.as_str() == &config::spec_hotword() { Some(it) } else { None }
                     } else {
                         None
                     }
-- 
GitLab