Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rework -Zverbose #119129

Merged
merged 2 commits into from
Dec 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion compiler/rustc_driver_impl/src/pretty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 146,7 @@ impl<'a> pprust_ast::PpAnn for AstHygieneAnn<'a> {
}
pprust_ast::AnnNode::Crate(_) => {
s.s.hardbreak();
let verbose = self.sess.verbose();
let verbose = self.sess.verbose_internals();
s.synth_comment(rustc_span::hygiene::debug_hygiene_data(verbose));
s.s.hardbreak_if_not_bol();
}
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_hir_typeck/src/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 187,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
expected: Expectation<'tcx>,
args: &'tcx [hir::Expr<'tcx>],
) -> Ty<'tcx> {
if self.tcx().sess.verbose() {
// make this code only run with -Zverbose because it is probably slow
if self.tcx().sess.verbose_internals() {
// make this code only run with -Zverbose-internals because it is probably slow
if let Ok(lint_str) = self.tcx.sess.source_map().span_to_snippet(expr.span) {
if !lint_str.contains('\n') {
debug!("expr text: {lint_str}");
Expand Down
42 changes: 23 additions & 19 deletions compiler/rustc_infer/src/infer/error_reporting/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1206,6 1206,23 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
s.push_highlighted(mutbl.prefix_str());
}

fn maybe_highlight<T: Eq ToString>(
t1: T,
t2: T,
(buf1, buf2): &mut (DiagnosticStyledString, DiagnosticStyledString),
tcx: TyCtxt<'_>,
) {
let highlight = t1 != t2;
let (t1, t2) = if highlight || tcx.sess.opts.verbose {
(t1.to_string(), t2.to_string())
} else {
// The two types are the same, elide and don't highlight.
("_".into(), "_".into())
};
buf1.push(t1, highlight);
buf2.push(t2, highlight);
}

fn cmp_ty_refs<'tcx>(
r1: ty::Region<'tcx>,
mut1: hir::Mutability,
Expand Down Expand Up @@ -1302,7 1319,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
if lifetimes.0 != lifetimes.1 {
values.0.push_highlighted(l1);
values.1.push_highlighted(l2);
} else if lifetimes.0.is_bound() {
} else if lifetimes.0.is_bound() || self.tcx.sess.opts.verbose {
values.0.push_normal(l1);
values.1.push_normal(l2);
} else {
Expand All @@ -1323,7 1340,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
let num_display_types = consts_offset - regions_len;
for (i, (ta1, ta2)) in type_arguments.take(num_display_types).enumerate() {
let i = i regions_len;
if ta1 == ta2 && !self.tcx.sess.verbose() {
if ta1 == ta2 && !self.tcx.sess.opts.verbose {
values.0.push_normal("_");
values.1.push_normal("_");
} else {
Expand All @@ -1337,13 1354,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
let const_arguments = sub1.consts().zip(sub2.consts());
for (i, (ca1, ca2)) in const_arguments.enumerate() {
let i = i consts_offset;
if ca1 == ca2 && !self.tcx.sess.verbose() {
values.0.push_normal("_");
values.1.push_normal("_");
} else {
values.0.push_highlighted(ca1.to_string());
values.1.push_highlighted(ca2.to_string());
}
maybe_highlight(ca1, ca2, &mut values, self.tcx);
self.push_comma(&mut values.0, &mut values.1, len, i);
}

Expand Down Expand Up @@ -1507,16 1518,9 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
(ty::FnPtr(sig1), ty::FnPtr(sig2)) => self.cmp_fn_sig(sig1, sig2),

_ => {
if t1 == t2 && !self.tcx.sess.verbose() {
// The two types are the same, elide and don't highlight.
(DiagnosticStyledString::normal("_"), DiagnosticStyledString::normal("_"))
} else {
// We couldn't find anything in common, highlight everything.
(
DiagnosticStyledString::highlighted(t1.to_string()),
DiagnosticStyledString::highlighted(t2.to_string()),
)
}
let mut strs = (DiagnosticStyledString::new(), DiagnosticStyledString::new());
maybe_highlight(t1, t2, &mut strs, self.tcx);
strs
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_infer/src/traits/structural_impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 17,7 @@ impl<'tcx, T: fmt::Debug> fmt::Debug for Normalized<'tcx, T> {

impl<'tcx, O: fmt::Debug> fmt::Debug for traits::Obligation<'tcx, O> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if ty::tls::with(|tcx| tcx.sess.verbose()) {
if ty::tls::with(|tcx| tcx.sess.verbose_internals()) {
write!(
f,
"Obligation(predicate={:?}, cause={:?}, param_env={:?}, depth={})",
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_interface/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -714,7 714,7 @@ fn test_unstable_options_tracking_hash() {
untracked!(unpretty, Some("expanded".to_string()));
untracked!(unstable_options, true);
untracked!(validate_mir, true);
untracked!(verbose, true);
untracked!(verbose_internals, true);
untracked!(write_long_types_to_disk, false);
// tidy-alphabetical-end

Expand Down
16 changes: 12 additions & 4 deletions compiler/rustc_middle/src/mir/pretty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -627,7 627,11 @@ where
w,
"{:A$} // {}{}",
indented_body,
if tcx.sess.verbose() { format!("{current_location:?}: ") } else { String::new() },
if tcx.sess.verbose_internals() {
format!("{current_location:?}: ")
} else {
String::new()
},
comment(tcx, statement.source_info),
A = ALIGN,
)?;
Expand All @@ -652,7 656,11 @@ where
w,
"{:A$} // {}{}",
indented_terminator,
if tcx.sess.verbose() { format!("{current_location:?}: ") } else { String::new() },
if tcx.sess.verbose_internals() {
format!("{current_location:?}: ")
} else {
String::new()
},
comment(tcx, data.terminator().source_info),
A = ALIGN,
)?;
Expand Down Expand Up @@ -943,7 951,7 @@ impl<'tcx> Debug for Rvalue<'tcx> {

// When printing regions, add trailing space if necessary.
let print_region = ty::tls::with(|tcx| {
tcx.sess.verbose() || tcx.sess.opts.unstable_opts.identify_regions
tcx.sess.verbose_internals() || tcx.sess.opts.unstable_opts.identify_regions
});
let region = if print_region {
let mut region = region.to_string();
Expand Down Expand Up @@ -1668,7 1676,7 @@ fn pretty_print_const_value_tcx<'tcx>(
) -> fmt::Result {
use crate::ty::print::PrettyPrinter;

if tcx.sess.verbose() {
if tcx.sess.verbose_internals() {
fmt.write_str(&format!("ConstValue({ct:?}: {ty})"))?;
return Ok(());
}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_middle/src/traits/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 177,7 @@ impl<'tcx> ObligationCause<'tcx> {

// NOTE(flaper87): As of now, it keeps track of the whole error
// chain. Ideally, we should have a way to configure this either
// by using -Z verbose or just a CLI argument.
// by using -Z verbose-internals or just a CLI argument.
self.code =
variant(DerivedObligationCause { parent_trait_pred, parent_code: self.code }).into();
self
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_middle/src/ty/generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 326,7 @@ impl<'tcx> Generics {
own_params.start = 1;
}

let verbose = tcx.sess.verbose();
let verbose = tcx.sess.verbose_internals();

// Filter the default arguments.
//
Expand All @@ -342,7 342,7 @@ impl<'tcx> Generics {
param.default_value(tcx).is_some_and(|default| {
default.instantiate(tcx, args) == args[param.index as usize]
})
// filter out trailing effect params, if we're not in `-Zverbose`.
// filter out trailing effect params, if we're not in `-Zverbose-internals`.
|| (!verbose && matches!(param.kind, GenericParamDefKind::Const { is_host_effect: true, .. }))
})
.count();
Expand Down
6 changes: 3 additions & 3 deletions compiler/rustc_middle/src/ty/print/pretty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 744,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> fmt::Write {
// only affect certain debug messages (e.g. messages printed
// from `rustc_middle::ty` during the computation of `tcx.predicates_of`),
// and should have no effect on any compiler output.
// [Unless `-Zverbose` is used, e.g. in the output of
// [Unless `-Zverbose-internals` is used, e.g. in the output of
// `tests/ui/nll/ty-outlives/impl-trait-captures.rs`, for
// example.]
if self.should_print_verbose() {
Expand Down Expand Up @@ -829,7 829,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> fmt::Write {
}
ty::CoroutineWitness(did, args) => {
p!(write("{{"));
if !self.tcx().sess.verbose() {
if !self.tcx().sess.verbose_internals() {
p!("coroutine witness");
// FIXME(eddyb) should use `def_span`.
if let Some(did) = did.as_local() {
Expand Down Expand Up @@ -1698,7 1698,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> fmt::Write {
}

fn should_print_verbose(&self) -> bool {
self.tcx().sess.verbose()
self.tcx().sess.verbose_internals()
}
}

Expand Down
7 changes: 5 additions & 2 deletions compiler/rustc_query_impl/src/plumbing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 315,11 @@ pub(crate) fn create_query_frame<
ty::print::with_forced_impl_filename_line!(do_describe(tcx, key))
)
);
let description =
if tcx.sess.verbose() { format!("{description} [{name:?}]") } else { description };
let description = if tcx.sess.verbose_internals() {
format!("{description} [{name:?}]")
} else {
description
};
let span = if kind == dep_graph::dep_kinds::def_span || with_no_queries() {
// The `def_span` query is used to calculate `default_span`,
// so exit to avoid infinite recursion.
Expand Down
4 changes: 4 additions & 0 deletions compiler/rustc_session/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1116,6 1116,7 @@ impl Default for Options {
working_dir: RealFileName::LocalPath(std::env::current_dir().unwrap()),
color: ColorConfig::Auto,
logical_env: FxIndexMap::default(),
verbose: false,
}
}
}
Expand Down Expand Up @@ -2916,6 2917,8 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
RealFileName::LocalPath(path.into_owned())
};

let verbose = matches.opt_present("verbose") || unstable_opts.verbose_internals;

Options {
assert_incr_state,
crate_types,
Expand Down Expand Up @@ -2957,6 2960,7 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
working_dir,
color,
logical_env,
verbose,
}
}

Expand Down
6 changes: 4 additions & 2 deletions compiler/rustc_session/src/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 223,8 @@ top_level_options!(
/// The (potentially remapped) working directory
working_dir: RealFileName [TRACKED],
color: ColorConfig [UNTRACKED],

verbose: bool [UNTRACKED],
}
);

Expand Down Expand Up @@ -1989,8 1991,8 @@ written to standard error output)"),
"use legacy .ctors section for initializers rather than .init_array"),
validate_mir: bool = (false, parse_bool, [UNTRACKED],
"validate MIR after each transformation"),
#[rustc_lint_opt_deny_field_access("use `Session::verbose` instead of this field")]
verbose: bool = (false, parse_bool, [UNTRACKED],
#[rustc_lint_opt_deny_field_access("use `Session::verbose_internals` instead of this field")]
verbose_internals: bool = (false, parse_bool, [UNTRACKED],
"in general, enable more debug printouts (default: no)"),
#[rustc_lint_opt_deny_field_access("use `Session::verify_llvm_ir` instead of this field")]
verify_llvm_ir: bool = (false, parse_bool, [TRACKED],
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_session/src/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -974,8 974,8 @@ impl Session {
// JUSTIFICATION: defn of the suggested wrapper fns
#[allow(rustc::bad_opt_access)]
impl Session {
pub fn verbose(&self) -> bool {
self.opts.unstable_opts.verbose
pub fn verbose_internals(&self) -> bool {
self.opts.unstable_opts.verbose_internals
}

pub fn print_llvm_stats(&self) -> bool {
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_symbol_mangling/src/legacy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 214,7 @@ impl<'tcx> Printer<'tcx> for SymbolPrinter<'tcx> {
| ty::Coroutine(def_id, args, _) => self.print_def_path(def_id, args),

// The `pretty_print_type` formatting of array size depends on
// -Zverbose flag, so we cannot reuse it here.
// -Zverbose-internals flag, so we cannot reuse it here.
ty::Array(ty, size) => {
self.write_str("[")?;
self.print_type(ty)?;
Expand Down Expand Up @@ -255,7 255,7 @@ impl<'tcx> Printer<'tcx> for SymbolPrinter<'tcx> {
// only print integers
match (ct.kind(), ct.ty().kind()) {
(ty::ConstKind::Value(ty::ValTree::Leaf(scalar)), ty::Int(_) | ty::Uint(_)) => {
// The `pretty_print_const` formatting depends on -Zverbose
// The `pretty_print_const` formatting depends on -Zverbose-internals
// flag, so we cannot reuse it here.
let signed = matches!(ct.ty().kind(), ty::Int(_));
write!(
Expand Down
2 changes: 1 addition & 1 deletion src/doc/rustc/src/command-line-arguments.md
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 343,7 @@ _Note:_ The order of these lint level arguments is taken into account, see [lint
## `-Z`: set unstable options

This flag will allow you to set unstable options of rustc. In order to set multiple options,
the -Z flag can be used multiple times. For example: `rustc -Z verbose -Z time-passes`.
the -Z flag can be used multiple times. For example: `rustc -Z verbose-internals -Z time-passes`.
Specifying options with -Z is only available on nightly. To view all available options
run: `rustc -Z help`, or see [The Unstable Book](../unstable-book/index.html).

Expand Down
4 changes: 2 additions & 2 deletions tests/mir-opt/nll/named_lifetimes_basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 4,8 @@
// suitable variables and that we setup the outlives relationship
// between R0 and R1 properly.

// compile-flags: -Zverbose
// ^^^^^^^^^ force compiler to dump more region information
// compile-flags: -Zverbose-internals
// ^^^^^^^^^^^^^^^^^^^ force compiler to dump more region information

#![allow(warnings)]

Expand Down
4 changes: 2 additions & 2 deletions tests/mir-opt/nll/region_subtyping_basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 3,8 @@
// in the type of `p` includes the points after `&v[0]` up to (but not
// including) the call to `use_x`. The `else` branch is not included.

// compile-flags:-Zverbose
// ^^^^^^^^^ force compiler to dump more region information
// compile-flags:-Zverbose-internals
// ^^^^^^^^^^^^^^^^^^^ force compiler to dump more region information

#![allow(warnings)]

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/associated-types/substs-ppaux.rs
Original file line number Diff line number Diff line change
@@ -1,7 1,7 @@
//
// revisions: verbose normal
//
//[verbose] compile-flags: -Z verbose
//[verbose] compile-flags: -Z verbose-internals

trait Foo<'b, 'c, S=u32> {
fn bar<'a, T>() where T: 'a {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Ztrim-diagnostic-paths=off -Zverbose
// compile-flags: -Ztrim-diagnostic-paths=off -Zverbose-internals

mod mod1 {
pub fn f<T: std::fmt::Display>(t: T)
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/closures/print/closure-print-generic-verbose-1.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

fn to_fn_once<F:FnOnce()>(f: F) -> F { f }

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/closures/print/closure-print-generic-verbose-2.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

mod mod1 {
pub fn f<T: std::fmt::Display>(t: T)
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/closures/print/closure-print-verbose.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

// Same as closure-coerce-fn-1.rs

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/coroutine/print/coroutine-print-verbose-1.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

// Same as: tests/ui/coroutine/issue-68112.stderr

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/coroutine/print/coroutine-print-verbose-2.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

// Same as test/ui/coroutine/not-send-sync.rs
#![feature(coroutines)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/coroutine/print/coroutine-print-verbose-3.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

#![feature(coroutines, coroutine_trait)]

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/fn/signature-error-reporting-under-verbose.rs
Original file line number Diff line number Diff line change
@@ -1,4 1,4 @@
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals

fn foo(_: i32, _: i32) {}

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/impl-trait/erased-regions-in-hidden-ty.rs
Original file line number Diff line number Diff line change
@@ -1,5 1,5 @@
// revisions: current next
// compile-flags: -Zverbose
// compile-flags: -Zverbose-internals
//[next] compile-flags: -Znext-solver
// normalize-stderr-test "DefId\([^\)] \)" -> "DefId(..)"

Expand Down
Loading
Loading