|
1 |
| -use std::borrow::Cow; |
2 | 1 | use std::fmt::{self, Display};
|
3 | 2 | use std::io;
|
4 | 3 | use std::path::{Path, PathBuf};
|
5 | 4 | use std::process::Command;
|
6 | 5 | use std::str::FromStr;
|
7 | 6 | use std::sync::Arc;
|
| 7 | +use std::{borrow::Cow, iter}; |
8 | 8 |
|
9 | 9 | use anyhow::{anyhow, bail, Context, Result};
|
10 | 10 | use derivative::Derivative;
|
@@ -580,13 +580,15 @@ impl Cfg {
|
580 | 580 | dir: &Path,
|
581 | 581 | settings: &Settings,
|
582 | 582 | ) -> Result<Option<(OverrideFile, OverrideReason)>> {
|
| 583 | + let mut override_ = None; |
| 584 | + |
583 | 585 | let notify = self.notify_handler.as_ref();
|
584 | 586 |
|
585 | 587 | for d in iter::successors(Some(dir), |d| d.parent()) {
|
586 | 588 | // First check the override database
|
587 | 589 | if let Some(name) = settings.dir_override(d, notify) {
|
588 | 590 | let reason = OverrideReason::OverrideDB(d.to_owned());
|
589 |
| - return Ok(Some((name.into(), reason))); |
| 591 | + update_override(&mut override_, name.into(), reason); |
590 | 592 | }
|
591 | 593 |
|
592 | 594 | // Then look for 'rust-toolchain' or 'rust-toolchain.toml'
|
@@ -661,11 +663,15 @@ impl Cfg {
|
661 | 663 | }
|
662 | 664 |
|
663 | 665 | let reason = OverrideReason::ToolchainFile(toolchain_file);
|
664 |
| - return Ok(Some((override_file, reason))); |
| 666 | + update_override(&mut override_, override_file, reason); |
| 667 | + } |
| 668 | + |
| 669 | + if override_.is_some() { |
| 670 | + break; |
665 | 671 | }
|
666 | 672 | }
|
667 | 673 |
|
668 |
| - Ok(None) |
| 674 | + Ok(override_) |
669 | 675 | }
|
670 | 676 |
|
671 | 677 | fn parse_override_file<S: AsRef<str>>(
|
|
0 commit comments