@@ -248,10 +248,10 @@ impl Display for MaybeOfficialToolchainName {
248
248
/// ToolchainName can be used in calls to Cfg that alter configuration,
249
249
/// like setting overrides, or that depend on configuration, like calculating
250
250
/// the toolchain directory.
251
- #[ derive( Clone , Debug , Eq , PartialEq ) ]
251
+ #[ derive( Clone , Debug , Eq , PartialEq , Ord , PartialOrd ) ]
252
252
pub enum ToolchainName {
253
- Custom ( CustomToolchainName ) ,
254
253
Official ( ToolchainDesc ) ,
254
+ Custom ( CustomToolchainName ) ,
255
255
}
256
256
257
257
impl ToolchainName {
@@ -280,31 +280,6 @@ impl Display for ToolchainName {
280
280
}
281
281
}
282
282
283
- /// Sorts [`ToolchainName`]s in the following order:
284
- /// 1. `stable`/`beta`/`nightly`-prefixed names, in this exact order.
285
- /// 2. `X.Y.Z-suffix` names, sorted by semver rules on `X.Y.Z`, then by `suffix`.
286
- /// 3. Other names, sorted alphanumerically.
287
- pub ( crate ) fn toolchain_sort ( v : & mut [ ToolchainName ] ) {
288
- v. sort_by_key ( |name| {
289
- let s = name. to_string ( ) ;
290
- if s. starts_with ( "stable" ) {
291
- return ( 0 , None , s) ;
292
- }
293
- if s. starts_with ( "beta" ) {
294
- return ( 1 , None , s) ;
295
- }
296
- if s. starts_with ( "nightly" ) {
297
- return ( 2 , None , s) ;
298
- }
299
- if let Some ( ( ver_str, suffix) ) = s. split_once ( '-' ) {
300
- if let Ok ( ver) = semver:: Version :: parse ( ver_str) {
301
- return ( 3 , Some ( ver) , suffix. to_owned ( ) ) ;
302
- }
303
- }
304
- ( 4 , None , s)
305
- } )
306
- }
307
-
308
283
/// ResolvableLocalToolchainName is used to process values set in
309
284
/// RUSTUP_TOOLCHAIN: resolvable and resolved official names, custom names and
310
285
/// absolute paths.
@@ -582,12 +557,18 @@ mod tests {
582
557
"stable-x86_64-unknown-linux-gnu" ,
583
558
"beta-x86_64-unknown-linux-gnu" ,
584
559
"nightly-x86_64-unknown-linux-gnu" ,
560
+ "nightly-2015-01-01-x86_64-unknown-linux-gnu" ,
585
561
"1.0.0-x86_64-unknown-linux-gnu" ,
586
562
"1.2.0-x86_64-unknown-linux-gnu" ,
563
+ "1.8-beta-x86_64-apple-darwin" ,
564
+ "1.8.0-beta-x86_64-apple-darwin" ,
565
+ "1.8.0-beta.2-x86_64-apple-darwin" ,
566
+ "1.8.0-x86_64-apple-darwin" ,
587
567
"1.8.0-x86_64-unknown-linux-gnu" ,
588
568
"1.10.0-x86_64-unknown-linux-gnu" ,
589
569
"bar(baz)" ,
590
570
"foo#bar" ,
571
+ "the cake is a lie" ,
591
572
"this.is.not-a+semver" ,
592
573
]
593
574
. into_iter ( )
@@ -598,20 +579,28 @@ mod tests {
598
579
"1.8.0-x86_64-unknown-linux-gnu" ,
599
580
"1.0.0-x86_64-unknown-linux-gnu" ,
600
581
"nightly-x86_64-unknown-linux-gnu" ,
582
+ "nightly-2015-01-01-x86_64-unknown-linux-gnu" ,
601
583
"stable-x86_64-unknown-linux-gnu" ,
602
584
"1.10.0-x86_64-unknown-linux-gnu" ,
603
585
"beta-x86_64-unknown-linux-gnu" ,
604
586
"1.2.0-x86_64-unknown-linux-gnu" ,
587
+ // https://github.com/rust-lang/rustup/issues/1329
588
+ "1.8.0-x86_64-apple-darwin" ,
589
+ "1.8-beta-x86_64-apple-darwin" ,
590
+ "1.8.0-beta-x86_64-apple-darwin" ,
591
+ "1.8.0-beta.2-x86_64-apple-darwin" ,
605
592
// https://github.com/rust-lang/rustup/issues/3517
606
593
"foo#bar" ,
607
594
"bar(baz)" ,
608
595
"this.is.not-a+semver" ,
596
+ // https://github.com/rust-lang/rustup/issues/3168
597
+ "the cake is a lie" ,
609
598
]
610
599
. into_iter ( )
611
600
. map ( |s| ToolchainName :: try_from ( s) . unwrap ( ) )
612
601
. collect :: < Vec < _ > > ( ) ;
613
602
614
- super :: toolchain_sort ( & mut v ) ;
603
+ v . sort ( ) ;
615
604
616
605
assert_eq ! ( expected, v) ;
617
606
}
0 commit comments