@@ -576,10 +576,10 @@ impl Cfg {
576
576
// Then walk up the directory tree from 'path' looking for either the
577
577
// directory in the override database, or a `rust-toolchain{.toml}` file,
578
578
// in that order.
579
- else if let Some ( ( override_file , active_reason) ) = self . settings_file . with ( |s| {
579
+ else if let Some ( ( override_cfg , active_reason) ) = self . settings_file . with ( |s| {
580
580
self . find_override_from_dir_walk ( path, s)
581
581
} ) ? {
582
- Some ( ( OverrideCfg :: from_file ( self , override_file ) ? , active_reason) )
582
+ Some ( ( override_cfg , active_reason) )
583
583
}
584
584
// Otherwise, there is no override.
585
585
else {
@@ -593,15 +593,24 @@ impl Cfg {
593
593
& self ,
594
594
dir : & Path ,
595
595
settings : & Settings ,
596
- ) -> Result < Option < ( OverrideFile , ActiveReason ) > > {
596
+ ) -> Result < Option < ( OverrideCfg , ActiveReason ) > > {
597
597
let notify = self . notify_handler . as_ref ( ) ;
598
598
let mut dir = Some ( dir) ;
599
599
600
600
while let Some ( d) = dir {
601
601
// First check the override database
602
602
if let Some ( name) = settings. dir_override ( d, notify) {
603
603
let reason = ActiveReason :: OverrideDB ( d. to_owned ( ) ) ;
604
- return Ok ( Some ( ( name. into ( ) , reason) ) ) ;
604
+ // Note that `rustup override set` fully resolves it's input
605
+ // before writing to settings.toml, so resolving here may not
606
+ // be strictly necessary (could instead model as ToolchainName).
607
+ // However, settings.toml could conceivably be hand edited to
608
+ // have an unresolved name. I'm just preserving pre-existing
609
+ // behaviour by choosing ResolvableToolchainName here.
610
+ let toolchain_name = ResolvableToolchainName :: try_from ( name) ?
611
+ . resolve ( & get_default_host_triple ( settings) ) ?;
612
+ let override_cfg = toolchain_name. into ( ) ;
613
+ return Ok ( Some ( ( override_cfg, reason) ) ) ;
605
614
}
606
615
607
616
// Then look for 'rust-toolchain' or 'rust-toolchain.toml'
@@ -674,7 +683,8 @@ impl Cfg {
674
683
}
675
684
676
685
let reason = ActiveReason :: ToolchainFile ( toolchain_file) ;
677
- return Ok ( Some ( ( override_file, reason) ) ) ;
686
+ let override_cfg = OverrideCfg :: from_file ( self , override_file) ?;
687
+ return Ok ( Some ( ( override_cfg, reason) ) ) ;
678
688
}
679
689
680
690
dir = d. parent ( ) ;
0 commit comments