Module rustc_incremental::persist::dirty_clean
source · [−]Expand description
Debugging code to test fingerprints computed for query results. For each node marked with
#[rustc_clean] we will compare the fingerprint from the current and from the previous
compilation session as appropriate:
-
#[rustc_clean(cfg="rev2", except="typeck")]if we are in#[cfg(rev2)], then the fingerprints associated withDepNode::typeck(X)must be DIFFERENT (Xis theDefIdof the current node). -
#[rustc_clean(cfg="rev2")]same as above, except that the fingerprints must be the SAME (along with all other fingerprints). -
#[rustc_clean(cfg="rev2", loaded_from_disk='typeck")]asserts that the query result forDepNode::typeck(X)was actually loaded from disk (not just marked green). This can be useful to ensure that a test is actually exercising the deserialization logic for a particular query result. This can be combined withexcept
Errors are reported if we are in the suitable configuration but the required condition is not met.
Structs
Constants
For typedef, constants, and statics
DepNodes for functions + methods
DepNodes for Hir, which is pretty much everything
impl implementation of struct/trait
DepNodes for mir_built/Optimized, which is relevant in “executable” code, i.e., functions+methods
Struct, Enum and Union DepNodes
Trait definition DepNodes.
Extra DepNodes for functions and methods.
Abstract data type (struct, enum, union) DepNodes.
Constant/Typedef in an impl
Trait-Const/Typedef DepNodes
Function DepNodes.
Method DepNodes.
Trait method DepNodes.
For generic cases like inline-assembly, modules, etc.
Impl DepNodes.
Impl DepNodes.
Functions
Given a #[rustc_clean] attribute, scan for a cfg="foo" attribute and check whether we have
a cfg flag called foo.