1
Fork 0

Revert 'Stabilize -Znext-solver=coherence'

This commit is contained in:
Michael Goulet 2024-09-11 17:57:04 -04:00
parent 5bce6d48ff
commit e866f8a97d
104 changed files with 578 additions and 392 deletions

View file

@ -842,11 +842,6 @@ pub struct NextSolverConfig {
/// This is only `true` if `coherence` is also enabled.
pub globally: bool,
}
impl Default for NextSolverConfig {
fn default() -> Self {
NextSolverConfig { coherence: true, globally: false }
}
}
#[derive(Clone)]
pub enum Input {

View file

@ -403,7 +403,7 @@ mod desc {
pub(crate) const parse_unpretty: &str = "`string` or `string=string`";
pub(crate) const parse_treat_err_as_bug: &str = "either no value or a non-negative number";
pub(crate) const parse_next_solver_config: &str =
"either `globally` (when used without an argument), `coherence` (default) or `no`";
"a comma separated list of solver configurations: `globally` (default), and `coherence`";
pub(crate) const parse_lto: &str =
"either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, `fat`, or omitted";
pub(crate) const parse_linker_plugin_lto: &str =
@ -1105,16 +1105,27 @@ mod parse {
}
}
pub(crate) fn parse_next_solver_config(slot: &mut NextSolverConfig, v: Option<&str>) -> bool {
pub(crate) fn parse_next_solver_config(
slot: &mut Option<NextSolverConfig>,
v: Option<&str>,
) -> bool {
if let Some(config) = v {
*slot = match config {
"no" => NextSolverConfig { coherence: false, globally: false },
"coherence" => NextSolverConfig { coherence: true, globally: false },
"globally" => NextSolverConfig { coherence: true, globally: true },
_ => return false,
};
let mut coherence = false;
let mut globally = true;
for c in config.split(',') {
match c {
"globally" => globally = true,
"coherence" => {
globally = false;
coherence = true;
}
_ => return false,
}
}
*slot = Some(NextSolverConfig { coherence: coherence || globally, globally });
} else {
*slot = NextSolverConfig { coherence: true, globally: true };
*slot = Some(NextSolverConfig { coherence: true, globally: true });
}
true
@ -1867,7 +1878,7 @@ options! {
"the size at which the `large_assignments` lint starts to be emitted"),
mutable_noalias: bool = (true, parse_bool, [TRACKED],
"emit noalias metadata for mutable references (default: yes)"),
next_solver: NextSolverConfig = (NextSolverConfig::default(), parse_next_solver_config, [TRACKED],
next_solver: Option<NextSolverConfig> = (None, parse_next_solver_config, [TRACKED],
"enable and configure the next generation trait solver used by rustc"),
nll_facts: bool = (false, parse_bool, [UNTRACKED],
"dump facts from NLL analysis into side files (default: no)"),