Skip to content

Commit 2946b70

Browse files
committed
Make rustup override and rust-toolchain.toml hierarchical
1 parent b7d9c87 commit 2946b70

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/config.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -580,14 +580,15 @@ impl Cfg {
580580
dir: &Path,
581581
settings: &Settings,
582582
) -> Result<Option<(OverrideFile, OverrideReason)>> {
583+
let mut override_ = None;
584+
583585
let notify = self.notify_handler.as_ref();
584-
let mut dir = Some(dir);
585586

586-
while let Some(d) = dir {
587+
for d in std::iter::successors(Some(dir), |d| d.parent()) {
587588
// First check the override database
588589
if let Some(name) = settings.dir_override(d, notify) {
589590
let reason = OverrideReason::OverrideDB(d.to_owned());
590-
return Ok(Some((name.into(), reason)));
591+
update_override(&mut override_, name.into(), reason);
591592
}
592593

593594
// Then look for 'rust-toolchain' or 'rust-toolchain.toml'
@@ -662,13 +663,11 @@ impl Cfg {
662663
}
663664

664665
let reason = OverrideReason::ToolchainFile(toolchain_file);
665-
return Ok(Some((override_file, reason)));
666+
update_override(&mut override_, override_file, reason);
666667
}
667-
668-
dir = d.parent();
669668
}
670669

671-
Ok(None)
670+
Ok(override_)
672671
}
673672

674673
fn parse_override_file<S: AsRef<str>>(

0 commit comments

Comments
 (0)