Skip to content

Commit 64395de

Browse files
committed
Auto merge of #3862 - matklad:crate-types, r=alexcrichton
Fix crate_types in serialized targets closes #3840
2 parents 20f6eff + 90bcf5c commit 64395de

File tree

2 files changed

+6
-19
lines changed

2 files changed

+6
-19
lines changed

src/cargo/core/manifest.rs

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,23 +112,6 @@ pub enum TargetKind {
112112
CustomBuild,
113113
}
114114

115-
impl TargetKind {
116-
/// Returns a vector of crate types as specified in a manifest
117-
pub fn crate_types(&self) -> Vec<&str> {
118-
use self::TargetKind::*;
119-
match *self {
120-
Lib(ref kinds) | ExampleLib(ref kinds) => {
121-
kinds.iter().map(LibKind::crate_type).collect()
122-
}
123-
Bin => vec!["bin"],
124-
ExampleBin => vec!["example"],
125-
Test => vec!["test"],
126-
CustomBuild => vec!["custom-build"],
127-
Bench => vec!["bench"]
128-
}
129-
}
130-
}
131-
132115
impl ser::Serialize for TargetKind {
133116
fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
134117
where S: ser::Serializer,
@@ -207,7 +190,11 @@ pub struct Target {
207190

208191
#[derive(Serialize)]
209192
struct SerializedTarget<'a> {
193+
/// Is this a `--bin bin`, `--lib`, `--example ex`?
194+
/// Serialized as a list of strings for historical reasons.
210195
kind: &'a TargetKind,
196+
/// Corresponds to `--crate-type` compiler attribute.
197+
/// See https://doc.rust-lang.org/reference.html#linkage
211198
crate_types: Vec<&'a str>,
212199
name: &'a str,
213200
src_path: &'a PathBuf,
@@ -217,7 +204,7 @@ impl ser::Serialize for Target {
217204
fn serialize<S: ser::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
218205
SerializedTarget {
219206
kind: &self.kind,
220-
crate_types: self.kind.crate_types(),
207+
crate_types: self.rustc_crate_types(),
221208
name: &self.name,
222209
src_path: &self.src_path,
223210
}.serialize(s)

tests/metadata.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ name = "ex"
308308
},
309309
{
310310
"kind": [ "example" ],
311-
"crate_types": [ "example" ],
311+
"crate_types": [ "bin" ],
312312
"name": "ex",
313313
"src_path": "[..][/]foo[/]examples[/]ex.rs"
314314
}

0 commit comments

Comments
 (0)