Skip to content

Commit d318ed4

Browse files
committed
fix(spec): Require opt-in for pre-release
1 parent 0ec3274 commit d318ed4

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/cargo/core/package_id_spec.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,9 +470,9 @@ mod tests {
470470

471471
let pre = PackageId::new("pre", "1.2.3-alpha.0", sid).unwrap();
472472
assert!(PackageIdSpec::parse("pre").unwrap().matches(pre));
473-
assert!(PackageIdSpec::parse("pre@1").unwrap().matches(pre));
474-
assert!(PackageIdSpec::parse("pre@1.2").unwrap().matches(pre));
475-
assert!(PackageIdSpec::parse("pre@1.2.3").unwrap().matches(pre));
473+
assert!(!PackageIdSpec::parse("pre@1").unwrap().matches(pre));
474+
assert!(!PackageIdSpec::parse("pre@1.2").unwrap().matches(pre));
475+
assert!(!PackageIdSpec::parse("pre@1.2.3").unwrap().matches(pre));
476476
assert!(PackageIdSpec::parse("pre@1.2.3-alpha.0")
477477
.unwrap()
478478
.matches(pre));

src/cargo/util/semver_ext.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,11 @@ impl PartialVersion {
187187
/// Build metadata does not affect version precedence but may be necessary for uniquely
188188
/// identifying a package.
189189
pub fn matches(&self, version: &Version) -> bool {
190+
if !version.pre.is_empty() && self.pre.is_none() {
191+
// Pre-release versions must be explicitly opted into, if for no other reason than to
192+
// give us room to figure out and define the semantics
193+
return false;
194+
}
190195
self.major == version.major
191196
&& self.minor.map(|f| f == version.minor).unwrap_or(true)
192197
&& self.patch.map(|f| f == version.patch).unwrap_or(true)

0 commit comments

Comments
 (0)