]> git.lizzy.rs Git - rust.git/commitdiff
Don't call `self.parse()` in `Compiler::crate_name()` unless necessary.
authorNicholas Nethercote <nnethercote@mozilla.com>
Thu, 29 Aug 2019 23:03:58 +0000 (09:03 +1000)
committerNicholas Nethercote <nnethercote@mozilla.com>
Sun, 1 Sep 2019 22:46:31 +0000 (08:46 +1000)
src/librustc_interface/queries.rs

index ed50dadb600993ec66a5bb79bef701bd2bcbe074..996e9fae0db5621801d92c3ad22df1c46dd8bab4 100644 (file)
@@ -126,17 +126,18 @@ pub fn register_plugins(&self) -> Result<&Query<(ast::Crate, PluginInfo)>> {
 
     pub fn crate_name(&self) -> Result<&Query<String>> {
         self.queries.crate_name.compute(|| {
-            let parse_result = self.parse()?;
-            let krate = parse_result.peek();
-            let result = match self.crate_name {
+            Ok(match self.crate_name {
                 Some(ref crate_name) => crate_name.clone(),
-                None => rustc_codegen_utils::link::find_crate_name(
-                    Some(self.session()),
-                    &krate.attrs,
-                    &self.input
-                ),
-            };
-            Ok(result)
+                None => {
+                    let parse_result = self.parse()?;
+                    let krate = parse_result.peek();
+                    rustc_codegen_utils::link::find_crate_name(
+                        Some(self.session()),
+                        &krate.attrs,
+                        &self.input
+                    )
+                }
+            })
         })
     }