1
1
use rustc_ast:: Attribute ;
2
- use rustc_semver :: RustcVersion ;
3
- use rustc_session:: Session ;
2
+ use rustc_attr :: parse_version ;
3
+ use rustc_session:: { RustcVersion , Session } ;
4
4
use rustc_span:: { sym, Symbol } ;
5
5
use serde:: Deserialize ;
6
6
use std:: fmt;
@@ -10,7 +10,7 @@ macro_rules! msrv_aliases {
10
10
$( $name: ident) ,* $( , ) ?
11
11
} ) * ) => {
12
12
$( $(
13
- pub const $name: RustcVersion = RustcVersion :: new ( $major, $minor, $patch) ;
13
+ pub const $name: RustcVersion = RustcVersion { major : $major, minor : $minor, patch : $patch } ;
14
14
) * ) *
15
15
} ;
16
16
}
@@ -81,9 +81,9 @@ impl<'de> Deserialize<'de> for Msrv {
81
81
D : serde:: Deserializer < ' de > ,
82
82
{
83
83
let v = String :: deserialize ( deserializer) ?;
84
- RustcVersion :: parse ( & v)
84
+ parse_version ( Symbol :: intern ( & v) )
85
85
. map ( |v| Msrv { stack : vec ! [ v] } )
86
- . map_err ( |_ | serde:: de:: Error :: custom ( "not a valid Rust version" ) )
86
+ . ok_or_else ( | | serde:: de:: Error :: custom ( "not a valid Rust version" ) )
87
87
}
88
88
}
89
89
@@ -95,7 +95,7 @@ impl Msrv {
95
95
pub fn read_cargo ( & mut self , sess : & Session ) {
96
96
let cargo_msrv = std:: env:: var ( "CARGO_PKG_RUST_VERSION" )
97
97
. ok ( )
98
- . and_then ( |v| RustcVersion :: parse ( & v) . ok ( ) ) ;
98
+ . and_then ( |v| parse_version ( Symbol :: intern ( & v) ) ) ;
99
99
100
100
match ( self . current ( ) , cargo_msrv) {
101
101
( None , Some ( cargo_msrv) ) => self . stack = vec ! [ cargo_msrv] ,
@@ -115,7 +115,7 @@ impl Msrv {
115
115
}
116
116
117
117
pub fn meets ( & self , required : RustcVersion ) -> bool {
118
- self . current ( ) . map_or ( true , |version| version . meets ( required) )
118
+ self . current ( ) . map_or ( true , |msrv| msrv >= required)
119
119
}
120
120
121
121
fn parse_attr ( sess : & Session , attrs : & [ Attribute ] ) -> Option < RustcVersion > {
@@ -131,7 +131,7 @@ impl Msrv {
131
131
}
132
132
133
133
if let Some ( msrv) = msrv_attr. value_str ( ) {
134
- if let Ok ( version) = RustcVersion :: parse ( msrv. as_str ( ) ) {
134
+ if let Some ( version) = parse_version ( msrv) {
135
135
return Some ( version) ;
136
136
}
137
137
0 commit comments