This used to work with the rustc_clean attribute, but doesn't anymore
since my rebase; but I don't know enough about the type checking to find
out what's wrong. The dep graph looks like this:
ItemSignature(xxxx) -> CollectItem(xxxx)
CollectItem(xxxx) -> ItemSignature(xxxx)
ItemSignature(xxxx) -> TypeckItemBody(yyyy)
HirBody(xxxx) -> CollectItem(xxxx)
The cycle between CollectItem and ItemSignature looks wrong, and my
guess is the CollectItem -> ItemSignature edge shouldn't be there, but
I'm not sure how to prevent it.
mod x {
#[cfg(rpass1)]
- pub fn x() -> i32 {
+ pub fn xxxx() -> i32 {
1
}
#[cfg(rpass2)]
- pub fn x() -> i32 {
+ pub fn xxxx() -> i32 {
2
}
}
mod y {
use x;
- #[rustc_clean(label="TypeckItemBody", cfg="rpass2")]
- pub fn y() {
- x::x();
+ // FIXME: This should be clean
+ #[rustc_dirty(label="TypeckItemBody", cfg="rpass2")]
+ pub fn yyyy() {
+ x::xxxx();
}
}
#[rustc_clean(label="TypeckItemBody", cfg="rpass2")]
pub fn z() {
- y::y();
+ y::yyyy();
}
}