mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-30 22:12:15 +00:00
db5ed4bd79
The way it is implemented currently try_force_from_dep_node returns true as long as there's a function to force the query. It wasn't this way from the beginning, earlier version was producing forcing result and it was changed in https://github.com/rust-lang/rust/pull/89978, I couldn't find any comments addressing this change. One way it can fail is by failing to recover the query in DepNodeParams::recover - when we are trying to query something that no longer exists in the current environment
41 lines
605 B
Rust
41 lines
605 B
Rust
// If it is impossible to find query arguments just from the hash
|
|
// compiler should treat the node as red
|
|
|
|
// In this test prior to fixing compiler was having problems figuring out
|
|
// drop impl for T inside of m
|
|
|
|
//@ revisions:cfail1 cfail2
|
|
//@ compile-flags: --crate-type=lib
|
|
//@ build-pass
|
|
|
|
pub trait P {
|
|
type A;
|
|
}
|
|
|
|
struct S;
|
|
|
|
impl P for S {
|
|
type A = C;
|
|
}
|
|
|
|
struct T<D: P>(D::A, Z<D>);
|
|
|
|
struct Z<D: P>(D::A, String);
|
|
|
|
impl<D: P> T<D> {
|
|
pub fn i() -> Self {
|
|
loop {}
|
|
}
|
|
}
|
|
|
|
enum C {
|
|
#[cfg(cfail1)]
|
|
Up(()),
|
|
#[cfg(cfail2)]
|
|
Lorry(()),
|
|
}
|
|
|
|
pub fn m() {
|
|
T::<S>::i();
|
|
}
|