Skip to content

Commit 3a6a343

Browse files
committed
Make rustup override and rust-toolchain.toml hierarchical
1 parent d6136e6 commit 3a6a343

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

Diff for: src/config.rs

+9-6
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,15 @@ 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
}
667668

668-
dir = d.parent();
669+
if override_.is_some() {
670+
break;
671+
}
669672
}
670673

671-
Ok(None)
674+
Ok(override_)
672675
}
673676

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

0 commit comments

Comments
 (0)