mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Rename Handler::delay_good_path_bug
as Handler::good_path_delayed_bug
.
In line with the previous commits.
This commit is contained in:
parent
2c337a072c
commit
c9008c6c8b
@ -284,9 +284,9 @@ impl<'tcx> fmt::Display for FrameInfo<'tcx> {
|
|||||||
{
|
{
|
||||||
write!(f, "inside closure")
|
write!(f, "inside closure")
|
||||||
} else {
|
} else {
|
||||||
// Note: this triggers a `good_path_bug` state, which means that if we ever get here
|
// Note: this triggers a `good_path_delayed_bug` state, which means that if we ever
|
||||||
// we must emit a diagnostic. We should never display a `FrameInfo` unless we
|
// get here we must emit a diagnostic. We should never display a `FrameInfo` unless
|
||||||
// actually want to emit a warning or error to the user.
|
// we actually want to emit a warning or error to the user.
|
||||||
write!(f, "inside `{}`", self.instance)
|
write!(f, "inside `{}`", self.instance)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -300,8 +300,8 @@ impl<'tcx> FrameInfo<'tcx> {
|
|||||||
errors::FrameNote { where_: "closure", span, instance: String::new(), times: 0 }
|
errors::FrameNote { where_: "closure", span, instance: String::new(), times: 0 }
|
||||||
} else {
|
} else {
|
||||||
let instance = format!("{}", self.instance);
|
let instance = format!("{}", self.instance);
|
||||||
// Note: this triggers a `good_path_bug` state, which means that if we ever get here
|
// Note: this triggers a `good_path_delayed_bug` state, which means that if we ever get
|
||||||
// we must emit a diagnostic. We should never display a `FrameInfo` unless we
|
// here we must emit a diagnostic. We should never display a `FrameInfo` unless we
|
||||||
// actually want to emit a warning or error to the user.
|
// actually want to emit a warning or error to the user.
|
||||||
errors::FrameNote { where_: "instance", span, instance, times: 0 }
|
errors::FrameNote { where_: "instance", span, instance, times: 0 }
|
||||||
}
|
}
|
||||||
|
@ -432,9 +432,9 @@ struct HandlerInner {
|
|||||||
deduplicated_err_count: usize,
|
deduplicated_err_count: usize,
|
||||||
emitter: Box<DynEmitter>,
|
emitter: Box<DynEmitter>,
|
||||||
span_delayed_bugs: Vec<DelayedDiagnostic>,
|
span_delayed_bugs: Vec<DelayedDiagnostic>,
|
||||||
delayed_good_path_bugs: Vec<DelayedDiagnostic>,
|
good_path_delayed_bugs: Vec<DelayedDiagnostic>,
|
||||||
/// This flag indicates that an expected diagnostic was emitted and suppressed.
|
/// This flag indicates that an expected diagnostic was emitted and suppressed.
|
||||||
/// This is used for the `delayed_good_path_bugs` check.
|
/// This is used for the `good_path_delayed_bugs` check.
|
||||||
suppressed_expected_diag: bool,
|
suppressed_expected_diag: bool,
|
||||||
|
|
||||||
/// This set contains the `DiagnosticId` of all emitted diagnostics to avoid
|
/// This set contains the `DiagnosticId` of all emitted diagnostics to avoid
|
||||||
@ -549,16 +549,16 @@ impl Drop for HandlerInner {
|
|||||||
self.flush_delayed(bugs, "no errors encountered even though `span_delayed_bug` issued");
|
self.flush_delayed(bugs, "no errors encountered even though `span_delayed_bug` issued");
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME(eddyb) this explains what `delayed_good_path_bugs` are!
|
// FIXME(eddyb) this explains what `good_path_delayed_bugs` are!
|
||||||
// They're `span_delayed_bugs` but for "require some diagnostic happened"
|
// They're `span_delayed_bugs` but for "require some diagnostic happened"
|
||||||
// instead of "require some error happened". Sadly that isn't ideal, as
|
// instead of "require some error happened". Sadly that isn't ideal, as
|
||||||
// lints can be `#[allow]`'d, potentially leading to this triggering.
|
// lints can be `#[allow]`'d, potentially leading to this triggering.
|
||||||
// Also, "good path" should be replaced with a better naming.
|
// Also, "good path" should be replaced with a better naming.
|
||||||
if !self.has_any_message() && !self.suppressed_expected_diag && !std::thread::panicking() {
|
if !self.has_any_message() && !self.suppressed_expected_diag && !std::thread::panicking() {
|
||||||
let bugs = std::mem::replace(&mut self.delayed_good_path_bugs, Vec::new());
|
let bugs = std::mem::replace(&mut self.good_path_delayed_bugs, Vec::new());
|
||||||
self.flush_delayed(
|
self.flush_delayed(
|
||||||
bugs,
|
bugs,
|
||||||
"no warnings or errors encountered even though `delayed_good_path_bugs` issued",
|
"no warnings or errors encountered even though `good_path_delayed_bugs` issued",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,7 +610,7 @@ impl Handler {
|
|||||||
deduplicated_warn_count: 0,
|
deduplicated_warn_count: 0,
|
||||||
emitter,
|
emitter,
|
||||||
span_delayed_bugs: Vec::new(),
|
span_delayed_bugs: Vec::new(),
|
||||||
delayed_good_path_bugs: Vec::new(),
|
good_path_delayed_bugs: Vec::new(),
|
||||||
suppressed_expected_diag: false,
|
suppressed_expected_diag: false,
|
||||||
taught_diagnostics: Default::default(),
|
taught_diagnostics: Default::default(),
|
||||||
emitted_diagnostic_codes: Default::default(),
|
emitted_diagnostic_codes: Default::default(),
|
||||||
@ -665,7 +665,7 @@ impl Handler {
|
|||||||
|
|
||||||
// actually free the underlying memory (which `clear` would not do)
|
// actually free the underlying memory (which `clear` would not do)
|
||||||
inner.span_delayed_bugs = Default::default();
|
inner.span_delayed_bugs = Default::default();
|
||||||
inner.delayed_good_path_bugs = Default::default();
|
inner.good_path_delayed_bugs = Default::default();
|
||||||
inner.taught_diagnostics = Default::default();
|
inner.taught_diagnostics = Default::default();
|
||||||
inner.emitted_diagnostic_codes = Default::default();
|
inner.emitted_diagnostic_codes = Default::default();
|
||||||
inner.emitted_diagnostics = Default::default();
|
inner.emitted_diagnostics = Default::default();
|
||||||
@ -1008,8 +1008,8 @@ impl Handler {
|
|||||||
|
|
||||||
// FIXME(eddyb) note the comment inside `impl Drop for HandlerInner`, that's
|
// FIXME(eddyb) note the comment inside `impl Drop for HandlerInner`, that's
|
||||||
// where the explanation of what "good path" is (also, it should be renamed).
|
// where the explanation of what "good path" is (also, it should be renamed).
|
||||||
pub fn delay_good_path_bug(&self, msg: impl Into<DiagnosticMessage>) {
|
pub fn good_path_delayed_bug(&self, msg: impl Into<DiagnosticMessage>) {
|
||||||
self.inner.borrow_mut().delay_good_path_bug(msg)
|
self.inner.borrow_mut().good_path_delayed_bug(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
@ -1444,7 +1444,7 @@ impl HandlerInner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn delayed_bug_count(&self) -> usize {
|
fn delayed_bug_count(&self) -> usize {
|
||||||
self.span_delayed_bugs.len() + self.delayed_good_path_bugs.len()
|
self.span_delayed_bugs.len() + self.good_path_delayed_bugs.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_error_count(&mut self, registry: &Registry) {
|
fn print_error_count(&mut self, registry: &Registry) {
|
||||||
@ -1620,13 +1620,13 @@ impl HandlerInner {
|
|||||||
|
|
||||||
// FIXME(eddyb) note the comment inside `impl Drop for HandlerInner`, that's
|
// FIXME(eddyb) note the comment inside `impl Drop for HandlerInner`, that's
|
||||||
// where the explanation of what "good path" is (also, it should be renamed).
|
// where the explanation of what "good path" is (also, it should be renamed).
|
||||||
fn delay_good_path_bug(&mut self, msg: impl Into<DiagnosticMessage>) {
|
fn good_path_delayed_bug(&mut self, msg: impl Into<DiagnosticMessage>) {
|
||||||
let mut diagnostic = Diagnostic::new(Level::DelayedBug, msg);
|
let mut diagnostic = Diagnostic::new(Level::DelayedBug, msg);
|
||||||
if self.flags.report_delayed_bugs {
|
if self.flags.report_delayed_bugs {
|
||||||
self.emit_diagnostic(&mut diagnostic);
|
self.emit_diagnostic(&mut diagnostic);
|
||||||
}
|
}
|
||||||
let backtrace = std::backtrace::Backtrace::capture();
|
let backtrace = std::backtrace::Backtrace::capture();
|
||||||
self.delayed_good_path_bugs.push(DelayedDiagnostic::with_backtrace(diagnostic, backtrace));
|
self.good_path_delayed_bugs.push(DelayedDiagnostic::with_backtrace(diagnostic, backtrace));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn failure_note(&mut self, msg: impl Into<DiagnosticMessage>) {
|
fn failure_note(&mut self, msg: impl Into<DiagnosticMessage>) {
|
||||||
|
@ -137,7 +137,7 @@ impl Drop for TypeErrCtxt<'_, '_> {
|
|||||||
self.infcx
|
self.infcx
|
||||||
.tcx
|
.tcx
|
||||||
.sess
|
.sess
|
||||||
.delay_good_path_bug("used a `TypeErrCtxt` without raising an error or lint");
|
.good_path_delayed_bug("used a `TypeErrCtxt` without raising an error or lint");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3025,7 +3025,7 @@ pub fn trimmed_def_paths(tcx: TyCtxt<'_>, (): ()) -> FxHashMap<DefId, Symbol> {
|
|||||||
//
|
//
|
||||||
// For good paths causing this bug, the `rustc_middle::ty::print::with_no_trimmed_paths`
|
// For good paths causing this bug, the `rustc_middle::ty::print::with_no_trimmed_paths`
|
||||||
// wrapper can be used to suppress this query, in exchange for full paths being formatted.
|
// wrapper can be used to suppress this query, in exchange for full paths being formatted.
|
||||||
tcx.sess.delay_good_path_bug(
|
tcx.sess.good_path_delayed_bug(
|
||||||
"trimmed_def_paths constructed but no error emitted; use `DelayDm` for lints or `with_no_trimmed_paths` for debugging",
|
"trimmed_def_paths constructed but no error emitted; use `DelayDm` for lints or `with_no_trimmed_paths` for debugging",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -551,12 +551,15 @@ impl Default for ErrorOutputType {
|
|||||||
/// Parameter to control path trimming.
|
/// Parameter to control path trimming.
|
||||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
|
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
|
||||||
pub enum TrimmedDefPaths {
|
pub enum TrimmedDefPaths {
|
||||||
/// `try_print_trimmed_def_path` never prints a trimmed path and never calls the expensive query
|
/// `try_print_trimmed_def_path` never prints a trimmed path and never calls the expensive
|
||||||
|
/// query.
|
||||||
#[default]
|
#[default]
|
||||||
Never,
|
Never,
|
||||||
/// `try_print_trimmed_def_path` calls the expensive query, the query doesn't call `delay_good_path_bug`
|
/// `try_print_trimmed_def_path` calls the expensive query, the query doesn't call
|
||||||
|
/// `good_path_delayed_bug`.
|
||||||
Always,
|
Always,
|
||||||
/// `try_print_trimmed_def_path` calls the expensive query, the query calls `delay_good_path_bug`
|
/// `try_print_trimmed_def_path` calls the expensive query, the query calls
|
||||||
|
/// `good_path_delayed_bug`.
|
||||||
GoodPath,
|
GoodPath,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,7 +640,7 @@ impl Session {
|
|||||||
/// Used for code paths of expensive computations that should only take place when
|
/// Used for code paths of expensive computations that should only take place when
|
||||||
/// warnings or errors are emitted. If no messages are emitted ("good path"), then
|
/// warnings or errors are emitted. If no messages are emitted ("good path"), then
|
||||||
/// it's likely a bug.
|
/// it's likely a bug.
|
||||||
pub fn delay_good_path_bug(&self, msg: impl Into<DiagnosticMessage>) {
|
pub fn good_path_delayed_bug(&self, msg: impl Into<DiagnosticMessage>) {
|
||||||
if self.opts.unstable_opts.print_type_sizes
|
if self.opts.unstable_opts.print_type_sizes
|
||||||
|| self.opts.unstable_opts.query_dep_graph
|
|| self.opts.unstable_opts.query_dep_graph
|
||||||
|| self.opts.unstable_opts.dump_mir.is_some()
|
|| self.opts.unstable_opts.dump_mir.is_some()
|
||||||
@ -651,7 +651,7 @@ impl Session {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.diagnostic().delay_good_path_bug(msg)
|
self.diagnostic().good_path_delayed_bug(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustc_lint_diagnostics]
|
#[rustc_lint_diagnostics]
|
||||||
@ -883,7 +883,7 @@ impl Session {
|
|||||||
if fuel.remaining == 0 && !fuel.out_of_fuel {
|
if fuel.remaining == 0 && !fuel.out_of_fuel {
|
||||||
if self.diagnostic().can_emit_warnings() {
|
if self.diagnostic().can_emit_warnings() {
|
||||||
// We only call `msg` in case we can actually emit warnings.
|
// We only call `msg` in case we can actually emit warnings.
|
||||||
// Otherwise, this could cause a `delay_good_path_bug` to
|
// Otherwise, this could cause a `good_path_delayed_bug` to
|
||||||
// trigger (issue #79546).
|
// trigger (issue #79546).
|
||||||
self.emit_warning(errors::OptimisationFuelExhausted { msg: msg() });
|
self.emit_warning(errors::OptimisationFuelExhausted { msg: msg() });
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user