未验证 提交 2a4f638d 编写于 作者: Y Yuki Okushi 提交者: GitHub

Rollup merge of #66846 - gizmondo:master, r=michaelwoerister

Make try_mark_previous_green aware of cycles.

Fixes #61323

r? @michaelwoerister
......@@ -710,14 +710,25 @@ fn try_mark_previous_green<'tcx>(
return None
}
None => {
if !tcx.sess.has_errors() {
if !tcx.sess.has_errors_or_delayed_span_bugs() {
bug!("try_mark_previous_green() - Forcing the DepNode \
should have set its color")
} else {
// If the query we just forced has resulted
// in some kind of compilation error, we
// don't expect that the corresponding
// dep-node color has been updated.
// If the query we just forced has resulted in
// some kind of compilation error, we cannot rely on
// the dep-node color having been properly updated.
// This means that the query system has reached an
// invalid state. We let the compiler continue (by
// returning `None`) so it can emit error messages
// and wind down, but rely on the fact that this
// invalid state will not be persisted to the
// incremental compilation cache because of
// compilation errors being present.
debug!("try_mark_previous_green({:?}) - END - \
dependency {:?} resulted in compilation error",
dep_node,
dep_dep_node);
return None
}
}
}
......
// revisions: rpass cfail
enum A {
//[cfail]~^ ERROR 3:1: 3:7: recursive type `A` has infinite size [E0072]
B(C),
}
#[cfg(rpass)]
struct C(Box<A>);
#[cfg(cfail)]
struct C(A);
//[cfail]~^ ERROR 12:1: 12:13: recursive type `C` has infinite size [E0072]
fn main() {}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册