don't return an Option from try_find_dep_kind
This commit is contained in:
parent
45f198197b
commit
66c9a59a14
3 changed files with 8 additions and 13 deletions
|
@ -153,12 +153,7 @@ impl QueryContext for QueryCtxt<'_> {
|
|||
}
|
||||
|
||||
fn depth_limit_error(self, job: QueryJobId) {
|
||||
let mut span = None;
|
||||
let mut note = None;
|
||||
if let Some((info, depth)) = job.try_find_dep_kind_root(self.collect_active_jobs()) {
|
||||
span = Some(info.job.span);
|
||||
note = Some(QueryOverflowNote { desc: info.query.description, depth });
|
||||
}
|
||||
let (info, depth) = job.find_dep_kind_root(self.collect_active_jobs());
|
||||
|
||||
let suggested_limit = match self.recursion_limit() {
|
||||
Limit(0) => Limit(2),
|
||||
|
@ -166,8 +161,8 @@ impl QueryContext for QueryCtxt<'_> {
|
|||
};
|
||||
|
||||
self.sess.dcx().emit_fatal(QueryOverflow {
|
||||
span,
|
||||
note,
|
||||
span: info.job.span,
|
||||
note: QueryOverflowNote { desc: info.query.description, depth },
|
||||
suggested_limit,
|
||||
crate_name: self.crate_name(LOCAL_CRATE),
|
||||
});
|
||||
|
|
|
@ -82,9 +82,9 @@ pub(crate) struct IncrementCompilation {
|
|||
#[diag(query_system_query_overflow)]
|
||||
pub struct QueryOverflow {
|
||||
#[primary_span]
|
||||
pub span: Option<Span>,
|
||||
pub span: Span,
|
||||
#[subdiagnostic]
|
||||
pub note: Option<QueryOverflowNote>,
|
||||
pub note: QueryOverflowNote,
|
||||
pub suggested_limit: Limit,
|
||||
pub crate_name: Symbol,
|
||||
}
|
||||
|
|
|
@ -136,18 +136,18 @@ impl QueryJobId {
|
|||
|
||||
#[cold]
|
||||
#[inline(never)]
|
||||
pub fn try_find_dep_kind_root(&self, query_map: QueryMap) -> Option<(QueryJobInfo, usize)> {
|
||||
pub fn find_dep_kind_root(&self, query_map: QueryMap) -> (QueryJobInfo, usize) {
|
||||
let mut depth = 1;
|
||||
let info = query_map.get(&self).unwrap();
|
||||
let dep_kind = info.query.dep_kind;
|
||||
let mut current_id = info.job.parent;
|
||||
let mut last_layout = Some((info.clone(), depth));
|
||||
let mut last_layout = (info.clone(), depth);
|
||||
|
||||
while let Some(id) = current_id {
|
||||
let info = query_map.get(&id).unwrap();
|
||||
if info.query.dep_kind == dep_kind {
|
||||
depth += 1;
|
||||
last_layout = Some((info.clone(), depth));
|
||||
last_layout = (info.clone(), depth);
|
||||
}
|
||||
current_id = info.job.parent;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue