Skip to content

Commit 8bcc0fa

Browse files
committed
cargo/manifest: remember whether target names were inferred
Add a boolean state to `Target` that tells us whether the name of the target was inferred by Cargo, or whether it was directly specified in the Manifest. This value will be required in the future, to allow changing the inferred names of targets, but retaining enough information to keep backwards compatibility.
1 parent 87f4b1b commit 8bcc0fa

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/cargo/core/manifest.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ pub struct Target {
207207
struct TargetInner {
208208
kind: TargetKind,
209209
name: String,
210+
// Whether the name was inferred by Cargo, or explicitly given.
211+
name_inferred: bool,
210212
// Note that `bin_name` is used for the cargo-feature `different_binary_name`
211213
bin_name: Option<String>,
212214
// Note that the `src_path` here is excluded from the `Hash` implementation
@@ -366,6 +368,7 @@ compact_debug! {
366368
[debug_the_fields(
367369
kind
368370
name
371+
name_inferred
369372
bin_name
370373
src_path
371374
required_features
@@ -657,6 +660,7 @@ impl Target {
657660
inner: Arc::new(TargetInner {
658661
kind: TargetKind::Bin,
659662
name: String::new(),
663+
name_inferred: false,
660664
bin_name: None,
661665
src_path,
662666
required_features: None,
@@ -790,6 +794,9 @@ impl Target {
790794
pub fn name(&self) -> &str {
791795
&self.inner.name
792796
}
797+
pub fn name_inferred(&self) -> bool {
798+
self.inner.name_inferred
799+
}
793800
pub fn crate_name(&self) -> String {
794801
self.name().replace("-", "_")
795802
}
@@ -964,6 +971,10 @@ impl Target {
964971
Arc::make_mut(&mut self.inner).name = name.to_string();
965972
self
966973
}
974+
pub fn set_name_inferred(&mut self, inferred: bool) -> &mut Target {
975+
Arc::make_mut(&mut self.inner).name_inferred = inferred;
976+
self
977+
}
967978
pub fn set_binary_name(&mut self, bin_name: Option<String>) -> &mut Target {
968979
Arc::make_mut(&mut self.inner).bin_name = bin_name;
969980
self

src/cargo/util/toml/targets.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ fn clean_lib(
247247

248248
let mut target = Target::lib_target(&lib.name(), crate_types, path, edition);
249249
configure(lib, &mut target)?;
250+
target.set_name_inferred(toml_lib.map_or(true, |v| v.name.is_none()));
250251
Ok(Some(target))
251252
}
252253

0 commit comments

Comments
 (0)