Rollup merge of #95635 - davidtwco:terminal-width-stabilization, r=oli-obk
sess: stabilize `--terminal-width` as `--diagnostic-width` Formerly `-Zterminal-width`, `--terminal-width` allows the user or build tool to inform rustc of the width of the terminal so that diagnostics can be truncated. Pending agreement to stabilize, see tracking issue at #84673. r? ```@oli-obk```
This commit is contained in:
commit
b36e58a458
32 changed files with 101 additions and 46 deletions
|
@ -63,7 +63,7 @@ impl HumanReadableErrorType {
|
|||
bundle: Option<Lrc<FluentBundle>>,
|
||||
fallback_bundle: LazyFallbackBundle,
|
||||
teach: bool,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
) -> EmitterWriter {
|
||||
let (short, color_config) = self.unzip();
|
||||
|
@ -76,7 +76,7 @@ impl HumanReadableErrorType {
|
|||
short,
|
||||
teach,
|
||||
color,
|
||||
terminal_width,
|
||||
diagnostic_width,
|
||||
macro_backtrace,
|
||||
)
|
||||
}
|
||||
|
@ -710,7 +710,7 @@ pub struct EmitterWriter {
|
|||
short_message: bool,
|
||||
teach: bool,
|
||||
ui_testing: bool,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
|
||||
macro_backtrace: bool,
|
||||
}
|
||||
|
@ -730,7 +730,7 @@ impl EmitterWriter {
|
|||
fallback_bundle: LazyFallbackBundle,
|
||||
short_message: bool,
|
||||
teach: bool,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
) -> EmitterWriter {
|
||||
let dst = Destination::from_stderr(color_config);
|
||||
|
@ -742,7 +742,7 @@ impl EmitterWriter {
|
|||
short_message,
|
||||
teach,
|
||||
ui_testing: false,
|
||||
terminal_width,
|
||||
diagnostic_width,
|
||||
macro_backtrace,
|
||||
}
|
||||
}
|
||||
|
@ -755,7 +755,7 @@ impl EmitterWriter {
|
|||
short_message: bool,
|
||||
teach: bool,
|
||||
colored: bool,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
) -> EmitterWriter {
|
||||
EmitterWriter {
|
||||
|
@ -766,7 +766,7 @@ impl EmitterWriter {
|
|||
short_message,
|
||||
teach,
|
||||
ui_testing: false,
|
||||
terminal_width,
|
||||
diagnostic_width,
|
||||
macro_backtrace,
|
||||
}
|
||||
}
|
||||
|
@ -1615,7 +1615,7 @@ impl EmitterWriter {
|
|||
width_offset + annotated_file.multiline_depth + 1
|
||||
};
|
||||
|
||||
let column_width = if let Some(width) = self.terminal_width {
|
||||
let column_width = if let Some(width) = self.diagnostic_width {
|
||||
width.saturating_sub(code_offset)
|
||||
} else if self.ui_testing {
|
||||
DEFAULT_COLUMN_WIDTH
|
||||
|
|
|
@ -42,7 +42,7 @@ pub struct JsonEmitter {
|
|||
pretty: bool,
|
||||
ui_testing: bool,
|
||||
json_rendered: HumanReadableErrorType,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ impl JsonEmitter {
|
|||
fallback_bundle: LazyFallbackBundle,
|
||||
pretty: bool,
|
||||
json_rendered: HumanReadableErrorType,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
) -> JsonEmitter {
|
||||
JsonEmitter {
|
||||
|
@ -66,7 +66,7 @@ impl JsonEmitter {
|
|||
pretty,
|
||||
ui_testing: false,
|
||||
json_rendered,
|
||||
terminal_width,
|
||||
diagnostic_width,
|
||||
macro_backtrace,
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ impl JsonEmitter {
|
|||
json_rendered: HumanReadableErrorType,
|
||||
fluent_bundle: Option<Lrc<FluentBundle>>,
|
||||
fallback_bundle: LazyFallbackBundle,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
) -> JsonEmitter {
|
||||
let file_path_mapping = FilePathMapping::empty();
|
||||
|
@ -87,7 +87,7 @@ impl JsonEmitter {
|
|||
fallback_bundle,
|
||||
pretty,
|
||||
json_rendered,
|
||||
terminal_width,
|
||||
diagnostic_width,
|
||||
macro_backtrace,
|
||||
)
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ impl JsonEmitter {
|
|||
fallback_bundle: LazyFallbackBundle,
|
||||
pretty: bool,
|
||||
json_rendered: HumanReadableErrorType,
|
||||
terminal_width: Option<usize>,
|
||||
diagnostic_width: Option<usize>,
|
||||
macro_backtrace: bool,
|
||||
) -> JsonEmitter {
|
||||
JsonEmitter {
|
||||
|
@ -112,7 +112,7 @@ impl JsonEmitter {
|
|||
pretty,
|
||||
ui_testing: false,
|
||||
json_rendered,
|
||||
terminal_width,
|
||||
diagnostic_width,
|
||||
macro_backtrace,
|
||||
}
|
||||
}
|
||||
|
@ -345,7 +345,7 @@ impl Diagnostic {
|
|||
je.fluent_bundle.clone(),
|
||||
je.fallback_bundle.clone(),
|
||||
false,
|
||||
je.terminal_width,
|
||||
je.diagnostic_width,
|
||||
je.macro_backtrace,
|
||||
)
|
||||
.ui_testing(je.ui_testing)
|
||||
|
|
|
@ -689,7 +689,6 @@ fn test_debugging_options_tracking_hash() {
|
|||
untracked!(span_debug, true);
|
||||
untracked!(span_free_formats, true);
|
||||
untracked!(temps_dir, Some(String::from("abc")));
|
||||
untracked!(terminal_width, Some(80));
|
||||
untracked!(threads, 99);
|
||||
untracked!(time, true);
|
||||
untracked!(time_llvm_passes, true);
|
||||
|
|
|
@ -726,6 +726,7 @@ impl Default for Options {
|
|||
prints: Vec::new(),
|
||||
cg: Default::default(),
|
||||
error_format: ErrorOutputType::default(),
|
||||
diagnostic_width: None,
|
||||
externs: Externs(BTreeMap::new()),
|
||||
crate_name: None,
|
||||
libs: Vec::new(),
|
||||
|
@ -1427,6 +1428,12 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
|
|||
never = never colorize output",
|
||||
"auto|always|never",
|
||||
),
|
||||
opt::opt_s(
|
||||
"",
|
||||
"diagnostic-width",
|
||||
"Inform rustc of the width of the output so that diagnostics can be truncated to fit",
|
||||
"WIDTH",
|
||||
),
|
||||
opt::multi_s(
|
||||
"",
|
||||
"remap-path-prefix",
|
||||
|
@ -2202,6 +2209,10 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options {
|
|||
|
||||
let error_format = parse_error_format(matches, color, json_rendered);
|
||||
|
||||
let diagnostic_width = matches.opt_get("diagnostic-width").unwrap_or_else(|_| {
|
||||
early_error(error_format, "`--diagnostic-width` must be an positive integer");
|
||||
});
|
||||
|
||||
let unparsed_crate_types = matches.opt_strs("crate-type");
|
||||
let crate_types = parse_crate_types_from_list(unparsed_crate_types)
|
||||
.unwrap_or_else(|e| early_error(error_format, &e));
|
||||
|
@ -2474,6 +2485,7 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options {
|
|||
prints,
|
||||
cg,
|
||||
error_format,
|
||||
diagnostic_width,
|
||||
externs,
|
||||
unstable_features: UnstableFeatures::from_environment(crate_name.as_deref()),
|
||||
crate_name,
|
||||
|
|
|
@ -170,6 +170,7 @@ top_level_options!(
|
|||
|
||||
test: bool [TRACKED],
|
||||
error_format: ErrorOutputType [UNTRACKED],
|
||||
diagnostic_width: Option<usize> [UNTRACKED],
|
||||
|
||||
/// If `Some`, enable incremental compilation, using the given
|
||||
/// directory to store intermediate results.
|
||||
|
@ -1388,6 +1389,8 @@ options! {
|
|||
"panic strategy for out-of-memory handling"),
|
||||
osx_rpath_install_name: bool = (false, parse_bool, [TRACKED],
|
||||
"pass `-install_name @rpath/...` to the macOS linker (default: no)"),
|
||||
diagnostic_width: Option<usize> = (None, parse_opt_number, [UNTRACKED],
|
||||
"set the current output width for diagnostic truncation"),
|
||||
panic_abort_tests: bool = (false, parse_bool, [TRACKED],
|
||||
"support compiling tests with panic=abort (default: no)"),
|
||||
panic_in_drop: PanicStrategy = (PanicStrategy::Unwind, parse_panic_strategy, [TRACKED],
|
||||
|
@ -1514,8 +1517,6 @@ options! {
|
|||
"show extended diagnostic help (default: no)"),
|
||||
temps_dir: Option<String> = (None, parse_opt_string, [UNTRACKED],
|
||||
"the directory the intermediate files are written to"),
|
||||
terminal_width: Option<usize> = (None, parse_opt_number, [UNTRACKED],
|
||||
"set the current terminal width"),
|
||||
// Diagnostics are considered side-effects of a query (see `QuerySideEffects`) and are saved
|
||||
// alongside query results and changes to translation options can affect diagnostics - so
|
||||
// translation options should be tracked.
|
||||
|
|
|
@ -1162,7 +1162,7 @@ fn default_emitter(
|
|||
fallback_bundle,
|
||||
short,
|
||||
sopts.debugging_opts.teach,
|
||||
sopts.debugging_opts.terminal_width,
|
||||
sopts.diagnostic_width,
|
||||
macro_backtrace,
|
||||
),
|
||||
Some(dst) => EmitterWriter::new(
|
||||
|
@ -1173,7 +1173,7 @@ fn default_emitter(
|
|||
short,
|
||||
false, // no teach messages when writing to a buffer
|
||||
false, // no colors when writing to a buffer
|
||||
None, // no terminal width
|
||||
None, // no diagnostic width
|
||||
macro_backtrace,
|
||||
),
|
||||
};
|
||||
|
@ -1188,7 +1188,7 @@ fn default_emitter(
|
|||
fallback_bundle,
|
||||
pretty,
|
||||
json_rendered,
|
||||
sopts.debugging_opts.terminal_width,
|
||||
sopts.diagnostic_width,
|
||||
macro_backtrace,
|
||||
)
|
||||
.ui_testing(sopts.debugging_opts.ui_testing),
|
||||
|
@ -1202,7 +1202,7 @@ fn default_emitter(
|
|||
fallback_bundle,
|
||||
pretty,
|
||||
json_rendered,
|
||||
sopts.debugging_opts.terminal_width,
|
||||
sopts.diagnostic_width,
|
||||
macro_backtrace,
|
||||
)
|
||||
.ui_testing(sopts.debugging_opts.ui_testing),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue