@@ -20,7 +20,10 @@ pub(crate) fn upgrade_requirement(
20
20
. into_iter ( )
21
21
. map ( |p| set_comparator ( p, version) )
22
22
. collect ( ) ;
23
- let comparators = comparators?;
23
+ let comparators: Vec < _ > = comparators?. into_iter ( ) . flatten ( ) . collect ( ) ;
24
+ if comparators. is_empty ( ) {
25
+ return Ok ( None ) ;
26
+ }
24
27
let new_req = semver:: VersionReq { comparators } ;
25
28
let mut new_req_text = new_req. to_string ( ) ;
26
29
if new_req_text. starts_with ( '^' ) && !req. starts_with ( '^' ) {
@@ -48,7 +51,7 @@ pub(crate) fn upgrade_requirement(
48
51
fn set_comparator (
49
52
mut pred : semver:: Comparator ,
50
53
version : & semver:: Version ,
51
- ) -> CargoResult < semver:: Comparator > {
54
+ ) -> CargoResult < Option < semver:: Comparator > > {
52
55
match pred. op {
53
56
semver:: Op :: Wildcard => {
54
57
pred. major = version. major ;
@@ -58,7 +61,7 @@ fn set_comparator(
58
61
if pred. patch . is_some ( ) {
59
62
pred. patch = Some ( version. patch ) ;
60
63
}
61
- Ok ( pred)
64
+ Ok ( Some ( pred) )
62
65
}
63
66
semver:: Op :: Exact => Ok ( assign_partial_req ( version, pred) ) ,
64
67
semver:: Op :: Greater | semver:: Op :: GreaterEq | semver:: Op :: Less | semver:: Op :: LessEq => {
@@ -77,7 +80,10 @@ fn set_comparator(
77
80
fn assign_partial_req (
78
81
version : & semver:: Version ,
79
82
mut pred : semver:: Comparator ,
80
- ) -> semver:: Comparator {
83
+ ) -> Option < semver:: Comparator > {
84
+ if !pred. pre . is_empty ( ) {
85
+ return None ;
86
+ }
81
87
pred. major = version. major ;
82
88
if pred. minor . is_some ( ) {
83
89
pred. minor = Some ( version. minor ) ;
@@ -86,7 +92,7 @@ fn assign_partial_req(
86
92
pred. patch = Some ( version. patch ) ;
87
93
}
88
94
pred. pre = version. pre . clone ( ) ;
89
- pred
95
+ Some ( pred)
90
96
}
91
97
92
98
fn unsupported_version_req ( req : impl Display ) -> anyhow:: Error {
@@ -220,7 +226,7 @@ mod test {
220
226
221
227
#[ test]
222
228
fn caret_prerelease ( ) {
223
- assert_req_bump ( "1.7.0" , "2.0.0-beta.21" , "1.7.0" ) ;
229
+ assert_req_bump ( "1.7.0" , "2.0.0-beta.21" , None ) ;
224
230
}
225
231
}
226
232
}
0 commit comments