about summary refs log tree commit diff
path: root/src/librustc_interface
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2019-08-30 09:03:58 +1000
committerNicholas Nethercote <nnethercote@mozilla.com>2019-09-02 08:46:31 +1000
commitd61605cef866008a19e33eb596df1d76ff1571f3 (patch)
tree2235a6dba8d9a20a5ed358caccecb2f54b96ca6a /src/librustc_interface
parentdfd43f0fdd4e6969c7d82c0670d70bf305fbccf8 (diff)
downloadrust-d61605cef866008a19e33eb596df1d76ff1571f3.tar.gz
rust-d61605cef866008a19e33eb596df1d76ff1571f3.zip
Don't call `self.parse()` in `Compiler::crate_name()` unless necessary.
Diffstat (limited to 'src/librustc_interface')
-rw-r--r--src/librustc_interface/queries.rs21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/librustc_interface/queries.rs b/src/librustc_interface/queries.rs
index ed50dadb600..996e9fae0db 100644
--- a/src/librustc_interface/queries.rs
+++ b/src/librustc_interface/queries.rs
@@ -126,17 +126,18 @@ impl Compiler {
 
     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
+                    )
+                }
+            })
         })
     }