Skip to content

Commit

Permalink
refactor(toml): Change resolving of targets to return what toml expects
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Apr 5, 2024
1 parent 93c7130 commit ec9e601
Showing 1 changed file with 28 additions and 12 deletions.
40 changes: 28 additions & 12 deletions src/cargo/util/toml/targets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ pub(super) fn to_targets(
)?;
targets.extend(to_bin_targets(
features,
&bins,
bins.as_deref().unwrap_or_default(),
package_root,
edition,
errors,
Expand All @@ -91,7 +91,7 @@ pub(super) fn to_targets(
errors,
)?;
targets.extend(to_example_targets(
&toml_examples,
toml_examples.as_deref().unwrap_or_default(),
package_root,
edition,
warnings,
Expand All @@ -105,7 +105,11 @@ pub(super) fn to_targets(
warnings,
errors,
)?;
targets.extend(to_test_targets(&toml_tests, package_root, edition)?);
targets.extend(to_test_targets(
toml_tests.as_deref().unwrap_or_default(),
package_root,
edition,
)?);

let toml_benches = resolve_benches(
resolved_toml.bench.as_ref(),
Expand All @@ -115,7 +119,11 @@ pub(super) fn to_targets(
warnings,
errors,
)?;
targets.extend(to_bench_targets(&toml_benches, package_root, edition)?);
targets.extend(to_bench_targets(
toml_benches.as_deref().unwrap_or_default(),
package_root,
edition,
)?);

// processing the custom build script
if let Some(custom_build) = package.resolved_build().expect("should be resolved") {
Expand Down Expand Up @@ -288,7 +296,7 @@ fn resolve_bins(
autodiscover: Option<bool>,
warnings: &mut Vec<String>,
has_lib: bool,
) -> CargoResult<Vec<TomlBinTarget>> {
) -> CargoResult<Option<Vec<TomlBinTarget>>> {
let inferred = inferred_bins(package_root, package_name);

let mut bins = toml_targets_and_inferred(
Expand Down Expand Up @@ -326,7 +334,7 @@ fn resolve_bins(
bin.path = Some(PathValue(path));
}

Ok(bins)
Ok(non_empty(bins))
}

fn to_bin_targets(
Expand Down Expand Up @@ -413,7 +421,7 @@ fn resolve_examples(
autodiscover: Option<bool>,
warnings: &mut Vec<String>,
errors: &mut Vec<String>,
) -> CargoResult<Vec<TomlExampleTarget>> {
) -> CargoResult<Option<Vec<TomlExampleTarget>>> {
let inferred = infer_from_directory(&package_root, Path::new(DEFAULT_EXAMPLE_DIR_NAME));

let targets = resolve_targets(
Expand All @@ -429,7 +437,7 @@ fn resolve_examples(
"autoexamples",
)?;

Ok(targets)
Ok(non_empty(targets))
}

fn to_example_targets(
Expand Down Expand Up @@ -470,7 +478,7 @@ fn resolve_tests(
autodiscover: Option<bool>,
warnings: &mut Vec<String>,
errors: &mut Vec<String>,
) -> CargoResult<Vec<TomlTestTarget>> {
) -> CargoResult<Option<Vec<TomlTestTarget>>> {
let inferred = infer_from_directory(&package_root, Path::new(DEFAULT_TEST_DIR_NAME));

let targets = resolve_targets(
Expand All @@ -486,7 +494,7 @@ fn resolve_tests(
"autotests",
)?;

Ok(targets)
Ok(non_empty(targets))
}

fn to_test_targets(
Expand Down Expand Up @@ -518,7 +526,7 @@ fn resolve_benches(
autodiscover: Option<bool>,
warnings: &mut Vec<String>,
errors: &mut Vec<String>,
) -> CargoResult<Vec<TomlBenchTarget>> {
) -> CargoResult<Option<Vec<TomlBenchTarget>>> {
let mut legacy_warnings = vec![];
let mut legacy_bench_path = |bench: &TomlTarget| {
let legacy_path = Path::new("src").join("bench.rs");
Expand Down Expand Up @@ -551,7 +559,7 @@ fn resolve_benches(
)?;
warnings.append(&mut legacy_warnings);

Ok(targets)
Ok(non_empty(targets))
}

fn to_bench_targets(
Expand All @@ -577,6 +585,14 @@ fn to_bench_targets(
Ok(result)
}

fn non_empty<T>(targets: Vec<T>) -> Option<Vec<T>> {
if targets.is_empty() {
None
} else {
Some(targets)
}
}

fn resolve_targets(
target_kind_human: &str,
target_kind: &str,
Expand Down

0 comments on commit ec9e601

Please sign in to comment.