Rollup merge of #82269 - LeSeulArtichaut:cleanup-ppmode, r=spastorino
Cleanup `PpMode` and friends This PR: - Separates `PpSourceMode` and `PpHirMode` to remove invalid states - Renames the variant to remove the redundant `Ppm` prefix - Adds basic documentation for the different pretty-print modes - Cleanups some code to make it more idiomatic Not sure if this is actually useful, but it looks cleaner to me.
This commit is contained in:
commit
8c0119da77
3 changed files with 92 additions and 99 deletions
|
@ -2057,40 +2057,21 @@ fn parse_pretty(
|
|||
debugging_opts: &DebuggingOptions,
|
||||
efmt: ErrorOutputType,
|
||||
) -> Option<PpMode> {
|
||||
let pretty = if debugging_opts.unstable_options {
|
||||
matches.opt_default("pretty", "normal").map(|a| {
|
||||
// stable pretty-print variants only
|
||||
parse_pretty_inner(efmt, &a, false)
|
||||
})
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
return if pretty.is_none() {
|
||||
debugging_opts.unpretty.as_ref().map(|a| {
|
||||
// extended with unstable pretty-print variants
|
||||
parse_pretty_inner(efmt, &a, true)
|
||||
})
|
||||
} else {
|
||||
pretty
|
||||
};
|
||||
|
||||
fn parse_pretty_inner(efmt: ErrorOutputType, name: &str, extended: bool) -> PpMode {
|
||||
use PpMode::*;
|
||||
use PpSourceMode::*;
|
||||
let first = match (name, extended) {
|
||||
("normal", _) => PpmSource(PpmNormal),
|
||||
("identified", _) => PpmSource(PpmIdentified),
|
||||
("everybody_loops", true) => PpmSource(PpmEveryBodyLoops),
|
||||
("expanded", _) => PpmSource(PpmExpanded),
|
||||
("expanded,identified", _) => PpmSource(PpmExpandedIdentified),
|
||||
("expanded,hygiene", _) => PpmSource(PpmExpandedHygiene),
|
||||
("hir", true) => PpmHir(PpmNormal),
|
||||
("hir,identified", true) => PpmHir(PpmIdentified),
|
||||
("hir,typed", true) => PpmHir(PpmTyped),
|
||||
("hir-tree", true) => PpmHirTree(PpmNormal),
|
||||
("mir", true) => PpmMir,
|
||||
("mir-cfg", true) => PpmMirCFG,
|
||||
("normal", _) => Source(PpSourceMode::Normal),
|
||||
("identified", _) => Source(PpSourceMode::Identified),
|
||||
("everybody_loops", true) => Source(PpSourceMode::EveryBodyLoops),
|
||||
("expanded", _) => Source(PpSourceMode::Expanded),
|
||||
("expanded,identified", _) => Source(PpSourceMode::ExpandedIdentified),
|
||||
("expanded,hygiene", _) => Source(PpSourceMode::ExpandedHygiene),
|
||||
("hir", true) => Hir(PpHirMode::Normal),
|
||||
("hir,identified", true) => Hir(PpHirMode::Identified),
|
||||
("hir,typed", true) => Hir(PpHirMode::Typed),
|
||||
("hir-tree", true) => HirTree,
|
||||
("mir", true) => Mir,
|
||||
("mir-cfg", true) => MirCFG,
|
||||
_ => {
|
||||
if extended {
|
||||
early_error(
|
||||
|
@ -2119,6 +2100,18 @@ fn parse_pretty(
|
|||
tracing::debug!("got unpretty option: {:?}", first);
|
||||
first
|
||||
}
|
||||
|
||||
if debugging_opts.unstable_options {
|
||||
if let Some(a) = matches.opt_default("pretty", "normal") {
|
||||
// stable pretty-print variants only
|
||||
return Some(parse_pretty_inner(efmt, &a, false));
|
||||
}
|
||||
}
|
||||
|
||||
debugging_opts.unpretty.as_ref().map(|a| {
|
||||
// extended with unstable pretty-print variants
|
||||
parse_pretty_inner(efmt, &a, true)
|
||||
})
|
||||
}
|
||||
|
||||
pub fn make_crate_type_option() -> RustcOptGroup {
|
||||
|
@ -2226,22 +2219,43 @@ impl fmt::Display for CrateType {
|
|||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
pub enum PpSourceMode {
|
||||
PpmNormal,
|
||||
PpmEveryBodyLoops,
|
||||
PpmExpanded,
|
||||
PpmIdentified,
|
||||
PpmExpandedIdentified,
|
||||
PpmExpandedHygiene,
|
||||
PpmTyped,
|
||||
/// `--pretty=normal`
|
||||
Normal,
|
||||
/// `-Zunpretty=everybody_loops`
|
||||
EveryBodyLoops,
|
||||
/// `--pretty=expanded`
|
||||
Expanded,
|
||||
/// `--pretty=identified`
|
||||
Identified,
|
||||
/// `--pretty=expanded,identified`
|
||||
ExpandedIdentified,
|
||||
/// `--pretty=expanded,hygiene`
|
||||
ExpandedHygiene,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
pub enum PpHirMode {
|
||||
/// `-Zunpretty=hir`
|
||||
Normal,
|
||||
/// `-Zunpretty=hir,identified`
|
||||
Identified,
|
||||
/// `-Zunpretty=hir,typed`
|
||||
Typed,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
pub enum PpMode {
|
||||
PpmSource(PpSourceMode),
|
||||
PpmHir(PpSourceMode),
|
||||
PpmHirTree(PpSourceMode),
|
||||
PpmMir,
|
||||
PpmMirCFG,
|
||||
/// Options that print the source code, i.e.
|
||||
/// `--pretty` and `-Zunpretty=everybody_loops`
|
||||
Source(PpSourceMode),
|
||||
/// Options that print the HIR, i.e. `-Zunpretty=hir`
|
||||
Hir(PpHirMode),
|
||||
/// `-Zunpretty=hir-tree`
|
||||
HirTree,
|
||||
/// `-Zunpretty=mir`
|
||||
Mir,
|
||||
/// `-Zunpretty=mir-cfg`
|
||||
MirCFG,
|
||||
}
|
||||
|
||||
impl PpMode {
|
||||
|
@ -2249,22 +2263,19 @@ impl PpMode {
|
|||
use PpMode::*;
|
||||
use PpSourceMode::*;
|
||||
match *self {
|
||||
PpmSource(PpmNormal | PpmIdentified) => false,
|
||||
Source(Normal | Identified) => false,
|
||||
|
||||
PpmSource(
|
||||
PpmExpanded | PpmEveryBodyLoops | PpmExpandedIdentified | PpmExpandedHygiene,
|
||||
)
|
||||
| PpmHir(_)
|
||||
| PpmHirTree(_)
|
||||
| PpmMir
|
||||
| PpmMirCFG => true,
|
||||
PpmSource(PpmTyped) => panic!("invalid state"),
|
||||
Source(Expanded | EveryBodyLoops | ExpandedIdentified | ExpandedHygiene)
|
||||
| Hir(_)
|
||||
| HirTree
|
||||
| Mir
|
||||
| MirCFG => true,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn needs_analysis(&self) -> bool {
|
||||
use PpMode::*;
|
||||
matches!(*self, PpmMir | PpmMirCFG)
|
||||
matches!(*self, Mir | MirCFG)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue