Skip to content

Commit 078372d

Browse files
committed
denote which algorithms cargo supports
1 parent 38309ba commit 078372d

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

compiler/rustc_session/src/options.rs

+21-3
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,8 @@ mod desc {
413413
pub const parse_merge_functions: &str = "one of: `disabled`, `trampolines`, or `aliases`";
414414
pub const parse_symbol_mangling_version: &str =
415415
"one of: `legacy`, `v0` (RFC 2603), or `hashed`";
416-
pub const parse_src_file_hash: &str = "either `md5`, `sha1`, or `sha256`";
416+
pub const parse_cargo_src_file_hash: &str = "one of `sha256`";
417+
pub const parse_src_file_hash: &str = "one of `md5`, `sha1`, or `sha256`";
417418
pub const parse_relocation_model: &str =
418419
"one of supported relocation models (`rustc --print relocation-models`)";
419420
pub const parse_code_model: &str = "one of supported code models (`rustc --print code-models`)";
@@ -1261,6 +1262,23 @@ mod parse {
12611262
true
12621263
}
12631264

1265+
pub(crate) fn parse_cargo_src_file_hash(
1266+
slot: &mut Option<SourceFileHashAlgorithm>,
1267+
v: Option<&str>,
1268+
) -> bool {
1269+
match v.and_then(|s| SourceFileHashAlgorithm::from_str(s).ok()) {
1270+
Some(hash_kind) => {
1271+
if hash_kind.supported_in_cargo() {
1272+
*slot = Some(hash_kind);
1273+
} else {
1274+
return false;
1275+
}
1276+
}
1277+
_ => return false,
1278+
}
1279+
true
1280+
}
1281+
12641282
pub(crate) fn parse_target_feature(slot: &mut String, v: Option<&str>) -> bool {
12651283
match v {
12661284
Some(s) => {
@@ -1647,8 +1665,8 @@ options! {
16471665
"instrument control-flow architecture protection"),
16481666
check_cfg_all_expected: bool = (false, parse_bool, [UNTRACKED],
16491667
"show all expected values in check-cfg diagnostics (default: no)"),
1650-
checksum_hash_algorithm: Option<SourceFileHashAlgorithm> = (None, parse_src_file_hash, [TRACKED],
1651-
"hash algorithm of source files used to check freshness in cargo (`md5`, `sha1`, or `sha256`)"),
1668+
checksum_hash_algorithm: Option<SourceFileHashAlgorithm> = (None, parse_cargo_src_file_hash, [TRACKED],
1669+
"hash algorithm of source files used to check freshness in cargo (`sha256`)"),
16521670
codegen_backend: Option<String> = (None, parse_opt_string, [TRACKED],
16531671
"the backend to use"),
16541672
combine_cgu: bool = (false, parse_bool, [TRACKED],

compiler/rustc_span/src/lib.rs

+12-3
Original file line numberDiff line numberDiff line change
@@ -1460,12 +1460,21 @@ pub enum SourceFileHashAlgorithm {
14601460
Sha256,
14611461
}
14621462

1463+
impl SourceFileHashAlgorithm {
1464+
pub fn supported_in_cargo(&self) -> bool {
1465+
match self {
1466+
Self::Md5 | Self::Sha1 => false,
1467+
Self::Sha256 => true,
1468+
}
1469+
}
1470+
}
1471+
14631472
impl Display for SourceFileHashAlgorithm {
14641473
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14651474
f.write_str(match self {
1466-
SourceFileHashAlgorithm::Md5 => "md5",
1467-
SourceFileHashAlgorithm::Sha1 => "sha1",
1468-
SourceFileHashAlgorithm::Sha256 => "sha256",
1475+
Self::Md5 => "md5",
1476+
Self::Sha1 => "sha1",
1477+
Self::Sha256 => "sha256",
14691478
})
14701479
}
14711480
}

0 commit comments

Comments
 (0)