11use 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 } ;
44use rustc_span:: { sym, Symbol } ;
55use serde:: Deserialize ;
66use std:: fmt;
@@ -10,7 +10,7 @@ macro_rules! msrv_aliases {
1010 $( $name: ident) ,* $( , ) ?
1111 } ) * ) => {
1212 $( $(
13- pub const $name: RustcVersion = RustcVersion :: new ( $major, $minor, $patch) ;
13+ pub const $name: RustcVersion = RustcVersion { major : $major, minor : $minor, patch : $patch } ;
1414 ) * ) *
1515 } ;
1616}
@@ -81,9 +81,9 @@ impl<'de> Deserialize<'de> for Msrv {
8181 D : serde:: Deserializer < ' de > ,
8282 {
8383 let v = String :: deserialize ( deserializer) ?;
84- RustcVersion :: parse ( & v)
84+ parse_version ( Symbol :: intern ( & v) )
8585 . 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" ) )
8787 }
8888}
8989
@@ -95,7 +95,7 @@ impl Msrv {
9595 pub fn read_cargo ( & mut self , sess : & Session ) {
9696 let cargo_msrv = std:: env:: var ( "CARGO_PKG_RUST_VERSION" )
9797 . ok ( )
98- . and_then ( |v| RustcVersion :: parse ( & v) . ok ( ) ) ;
98+ . and_then ( |v| parse_version ( Symbol :: intern ( & v) ) ) ;
9999
100100 match ( self . current ( ) , cargo_msrv) {
101101 ( None , Some ( cargo_msrv) ) => self . stack = vec ! [ cargo_msrv] ,
@@ -115,7 +115,7 @@ impl Msrv {
115115 }
116116
117117 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)
119119 }
120120
121121 fn parse_attr ( sess : & Session , attrs : & [ Attribute ] ) -> Option < RustcVersion > {
@@ -131,7 +131,7 @@ impl Msrv {
131131 }
132132
133133 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) {
135135 return Some ( version) ;
136136 }
137137
0 commit comments