Skip to content

Commit

Permalink
refactor: enum to represent kinds of tools being run
Browse files Browse the repository at this point in the history
  • Loading branch information
weihanglo committed Feb 26, 2024
1 parent f415cb2 commit 91f75ac
Showing 1 changed file with 26 additions and 6 deletions.
32 changes: 26 additions & 6 deletions src/cargo/core/compiler/compilation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,25 @@ use crate::core::compiler::{CompileKind, Metadata, Unit};
use crate::core::Package;
use crate::util::{config, CargoResult, GlobalContext};

/// Represents the kind of process we are creating.
#[derive(Debug)]
enum ToolKind {
/// See [`Compilation::rustc_process`].
Rustc,
/// See [`Compilation::rustdoc_process`].
Rustdoc,
/// See [`Compilation::host_process`].
HostProcess,
/// See [`Compilation::target_process`].
TargetProcess,
}

impl ToolKind {
fn is_rustc_tool(&self) -> bool {
matches!(self, ToolKind::Rustc | ToolKind::Rustdoc)
}
}

/// Structure with enough information to run `rustdoc --test`.
pub struct Doctest {
/// What's being doctested
Expand Down Expand Up @@ -176,7 +195,7 @@ impl<'gctx> Compilation<'gctx> {
};

let cmd = fill_rustc_tool_env(rustc, unit);
self.fill_env(cmd, &unit.pkg, None, unit.kind, true)
self.fill_env(cmd, &unit.pkg, None, unit.kind, ToolKind::Rustc)
}

/// Returns a [`ProcessBuilder`] for running `rustdoc`.
Expand All @@ -187,7 +206,7 @@ impl<'gctx> Compilation<'gctx> {
) -> CargoResult<ProcessBuilder> {
let rustdoc = ProcessBuilder::new(&*self.gctx.rustdoc()?);
let cmd = fill_rustc_tool_env(rustdoc, unit);
let mut cmd = self.fill_env(cmd, &unit.pkg, script_meta, unit.kind, true)?;
let mut cmd = self.fill_env(cmd, &unit.pkg, script_meta, unit.kind, ToolKind::Rustdoc)?;
cmd.retry_with_argfile(true);
unit.target.edition().cmd_edition_arg(&mut cmd);

Expand All @@ -214,7 +233,7 @@ impl<'gctx> Compilation<'gctx> {
pkg,
None,
CompileKind::Host,
false,
ToolKind::HostProcess,
)
}

Expand Down Expand Up @@ -249,7 +268,8 @@ impl<'gctx> Compilation<'gctx> {
} else {
ProcessBuilder::new(cmd)
};
let mut builder = self.fill_env(builder, pkg, script_meta, kind, false)?;
let tool_kind = ToolKind::TargetProcess;
let mut builder = self.fill_env(builder, pkg, script_meta, kind, tool_kind)?;

if let Some(client) = self.gctx.jobserver_from_env() {
builder.inherit_jobserver(client);
Expand All @@ -269,10 +289,10 @@ impl<'gctx> Compilation<'gctx> {
pkg: &Package,
script_meta: Option<Metadata>,
kind: CompileKind,
is_rustc_tool: bool,
tool_kind: ToolKind,
) -> CargoResult<ProcessBuilder> {
let mut search_path = Vec::new();
if is_rustc_tool {
if tool_kind.is_rustc_tool() {
search_path.push(self.deps_output[&CompileKind::Host].clone());
} else {
search_path.extend(super::filter_dynamic_search_path(
Expand Down

0 comments on commit 91f75ac

Please sign in to comment.