// Regression test for #42602. It used to be that we had // a dep-graph like // // typeck(foo) -> FnOnce -> typeck(bar) // // This was fixed by improving the resolution of the `FnOnce` trait // selection node. // revisions:cfail1 cfail2 cfail3 // compile-flags:-Zquery-dep-graph // build-pass (FIXME(62277): could be check-pass?) #![feature(rustc_attrs)] fn main() { a::foo(); b::bar(); } mod a { #[cfg(cfail1)] pub fn foo() { let x = vec![1, 2, 3]; let v = || ::std::mem::drop(x); v(); } #[cfg(not(cfail1))] pub fn foo() { let x = vec![1, 2, 3, 4]; let v = || ::std::mem::drop(x); v(); } } mod b { #[rustc_clean(cfg="cfail2")] #[rustc_clean(cfg="cfail3")] pub fn bar() { let x = vec![1, 2, 3]; let v = || ::std::mem::drop(x); v(); } }