This module implements some validity checks for attributes.
In particular it verifies that #[inline]
and #[repr]
attributes are
attached to items that actually support them and if there are
conflicts between multiple such attributes attached to the same
item.
Detecting usage of the #[debugger_visualizer]
attribute.
Detecting diagnostic items.
Detecting lang items.
Detecting lib features (i.e., features that are not lang features).
A classic liveness analysis based on dataflow over the AST. Computes,
for each local variable in a function, whether that variable is live
at a given point. Program execution points are identified by their
IDs.
Checks validity of naked functions.
Finds local items that are βreachableβ, which means that other crates need access to their
compiled code or their runtime MIR. (Compile-time MIR is always encoded anyway, so we donβt
worry about that here.)
A pass that annotates every item and method with its stability level,
propagating default levels lexically from parent to children ast nodes.
Upvar (closure capture) collection from cross-body HIR uses of Res::Local
s.
Validity checking for weak lang items