Don't call self.parse() in Compiler::crate_name() unless necessary.

This commit is contained in:
Nicholas Nethercote 2019-08-30 09:03:58 +10:00
parent dfd43f0fdd
commit d61605cef8

View File

@ -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
)
}
})
})
}