Skip to content

Commit 45f08c9

Browse files
committed
Improve error message for wrong target names
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
1 parent 0c57749 commit 45f08c9

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

src/cargo/ops/cargo_compile.rs

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
//! repeats until the queue is empty.
2424
2525
use std::collections::{BTreeSet, HashMap, HashSet};
26+
use std::fmt::Write;
2627
use std::hash::{Hash, Hasher};
2728
use std::sync::Arc;
2829

@@ -1526,19 +1527,41 @@ fn find_named_targets<'a>(
15261527
};
15271528

15281529
if proposals.is_empty() {
1529-
let targets = packages.iter().flat_map(|pkg| {
1530-
pkg.targets()
1531-
.iter()
1532-
.filter(|target| is_expected_kind(target))
1533-
});
1534-
let suggestion = closest_msg(target_name, targets, |t| t.name());
1535-
anyhow::bail!(
1536-
"no {} target {} `{}`{}",
1530+
let targets = packages
1531+
.iter()
1532+
.flat_map(|pkg| {
1533+
pkg.targets()
1534+
.iter()
1535+
.filter(|target| is_expected_kind(target))
1536+
})
1537+
.collect::<Vec<_>>();
1538+
let suggestion = closest_msg(target_name, targets.iter(), |t| t.name());
1539+
if !suggestion.is_empty() {
1540+
anyhow::bail!(
1541+
"no {} target {} `{}`{}",
1542+
target_desc,
1543+
if is_glob { "matches pattern" } else { "named" },
1544+
target_name,
1545+
suggestion
1546+
);
1547+
}
1548+
let mut msg = String::new();
1549+
writeln!(
1550+
msg,
1551+
"no {} target {} `{}`.",
15371552
target_desc,
15381553
if is_glob { "matches pattern" } else { "named" },
15391554
target_name,
1540-
suggestion
1541-
);
1555+
)?;
1556+
if targets.is_empty() {
1557+
writeln!(msg, "No {} targets available.", target_desc)?;
1558+
anyhow::bail!(msg);
1559+
}
1560+
writeln!(msg, "Available {} targets:", target_desc)?;
1561+
for target in targets {
1562+
writeln!(msg, " {}", target.name())?;
1563+
}
1564+
anyhow::bail!(msg);
15421565
}
15431566
Ok(proposals)
15441567
}

0 commit comments

Comments
 (0)