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 with DepNode::typeck(X) must be DIFFERENT (X is the DefId of 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 for DepNode::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 with except

Errors are reported if we are in the suitable configuration but the required condition is not met.

Structs

Assertion 🔒

Represents the requested configuration by rustc_clean/dirty

Constants

BASE_CONST 🔒

For typedef, constants, and statics

BASE_FN 🔒

DepNodes for functions + methods

BASE_HIR 🔒

DepNodes for Hir, which is pretty much everything

BASE_IMPL 🔒

impl implementation of struct/trait

BASE_MIR 🔒

DepNodes for mir_built/Optimized, which is relevant in “executable” code, i.e., functions+methods

Struct, Enum and Union DepNodes

CFG 🔒
EXCEPT 🔒

Trait definition DepNodes. Extra DepNodes for functions and methods.

LABELS_ADT 🔒

Abstract data type (struct, enum, union) DepNodes.

Constant/Typedef in an impl

Trait-Const/Typedef DepNodes

LABELS_FN 🔒

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.

Type Definitions

Labels 🔒