]> git.lizzy.rs Git - rust.git/commitdiff
Clean up `find_library_crate`.
authorNicholas Nethercote <n.nethercote@gmail.com>
Thu, 3 Feb 2022 22:36:17 +0000 (09:36 +1100)
committerNicholas Nethercote <n.nethercote@gmail.com>
Thu, 3 Feb 2022 23:55:32 +0000 (10:55 +1100)
By introducing prefix and suffix variables for all file types, and
renaming some variables.

compiler/rustc_metadata/src/locator.rs

index caa544284c914b074c17dcc09028021838b91296..69725b1377ce74c2c605692c44de0e7740dc74d6 100644 (file)
@@ -371,11 +371,17 @@ fn find_library_crate(
         extra_prefix: &str,
         seen_paths: &mut FxHashSet<PathBuf>,
     ) -> Result<Option<Library>, CrateError> {
-        // want: crate_name.dir_part() + prefix + crate_name.file_part + "-"
-        let dylib_prefix = format!("{}{}{}", self.target.dll_prefix, self.crate_name, extra_prefix);
-        let rlib_prefix = format!("lib{}{}", self.crate_name, extra_prefix);
+        let rmeta_prefix = &format!("lib{}{}", self.crate_name, extra_prefix);
+        let rlib_prefix = rmeta_prefix;
+        let dylib_prefix =
+            &format!("{}{}{}", self.target.dll_prefix, self.crate_name, extra_prefix);
         let staticlib_prefix =
-            format!("{}{}{}", self.target.staticlib_prefix, self.crate_name, extra_prefix);
+            &format!("{}{}{}", self.target.staticlib_prefix, self.crate_name, extra_prefix);
+
+        let rmeta_suffix = ".rmeta";
+        let rlib_suffix = ".rlib";
+        let dylib_suffix = &self.target.dll_suffix;
+        let staticlib_suffix = &self.target.staticlib_suffix;
 
         let mut candidates: FxHashMap<_, (FxHashMap<_, _>, FxHashMap<_, _>, FxHashMap<_, _>)> =
             Default::default();
@@ -399,23 +405,15 @@ fn find_library_crate(
             for spf in search_path.files.iter() {
                 debug!("testing {}", spf.path.display());
 
-                let file = &spf.file_name_str;
-                let (hash, found_kind) = if file.starts_with(&rlib_prefix)
-                    && file.ends_with(".rlib")
-                {
-                    (&file[(rlib_prefix.len())..(file.len() - ".rlib".len())], CrateFlavor::Rlib)
-                } else if file.starts_with(&rlib_prefix) && file.ends_with(".rmeta") {
-                    (&file[(rlib_prefix.len())..(file.len() - ".rmeta".len())], CrateFlavor::Rmeta)
-                } else if file.starts_with(&dylib_prefix) && file.ends_with(&self.target.dll_suffix)
-                {
-                    (
-                        &file[(dylib_prefix.len())..(file.len() - self.target.dll_suffix.len())],
-                        CrateFlavor::Dylib,
-                    )
+                let f = &spf.file_name_str;
+                let (hash, kind) = if f.starts_with(rlib_prefix) && f.ends_with(rlib_suffix) {
+                    (&f[rlib_prefix.len()..(f.len() - rlib_suffix.len())], CrateFlavor::Rlib)
+                } else if f.starts_with(rmeta_prefix) && f.ends_with(rmeta_suffix) {
+                    (&f[rmeta_prefix.len()..(f.len() - rmeta_suffix.len())], CrateFlavor::Rmeta)
+                } else if f.starts_with(dylib_prefix) && f.ends_with(dylib_suffix) {
+                    (&f[dylib_prefix.len()..(f.len() - dylib_suffix.len())], CrateFlavor::Dylib)
                 } else {
-                    if file.starts_with(&staticlib_prefix)
-                        && file.ends_with(&self.target.staticlib_suffix)
-                    {
+                    if f.starts_with(staticlib_prefix) && f.ends_with(staticlib_suffix) {
                         staticlibs.push(CrateMismatch {
                             path: spf.path.clone(),
                             got: "static".to_string(),
@@ -432,7 +430,7 @@ fn find_library_crate(
                     continue;
                 };
                 seen_paths.insert(path.clone());
-                match found_kind {
+                match kind {
                     CrateFlavor::Rlib => rlibs.insert(path, search_path.kind),
                     CrateFlavor::Rmeta => rmetas.insert(path, search_path.kind),
                     CrateFlavor::Dylib => dylibs.insert(path, search_path.kind),