pub struct SymbolReferences { /* private fields */ }Expand description
Stores various maps tracking references between symbols (classes, functions, etc.) and class-like members (methods, properties, constants, etc.) within the codebase.
This is primarily used for dependency analysis, understanding code structure, and potentially for tasks like dead code detection or impact analysis.
Implementations§
Source§impl SymbolReferences
impl SymbolReferences
Sourcepub fn add_symbol_reference_to_class_member(
&mut self,
referencing_symbol: StringIdentifier,
class_member: SymbolIdentifier,
in_signature: bool,
)
pub fn add_symbol_reference_to_class_member( &mut self, referencing_symbol: StringIdentifier, class_member: SymbolIdentifier, in_signature: bool, )
Records that a top-level symbol (e.g., a function) references a class member.
Automatically adds a reference from the referencing symbol to the member’s class.
§Arguments
referencing_symbol: The FQN of the function or global const making the reference.class_member: A tuple(ClassName, MemberName)being referenced.in_signature:trueif the reference occurs in a signature context,falseif in the body.
Sourcepub fn add_symbol_reference_to_symbol(
&mut self,
referencing_symbol: StringIdentifier,
symbol: StringIdentifier,
in_signature: bool,
)
pub fn add_symbol_reference_to_symbol( &mut self, referencing_symbol: StringIdentifier, symbol: StringIdentifier, in_signature: bool, )
Records that a top-level symbol references another top-level symbol.
Skips self-references. Skips body references if already referenced in signature.
§Arguments
referencing_symbol: The FQN of the symbol making the reference.symbol: The FQN of the symbol being referenced.in_signature:trueif the reference occurs in a signature context,falseif in the body.
Sourcepub fn add_class_member_reference_to_class_member(
&mut self,
referencing_class_member: SymbolIdentifier,
class_member: SymbolIdentifier,
in_signature: bool,
)
pub fn add_class_member_reference_to_class_member( &mut self, referencing_class_member: SymbolIdentifier, class_member: SymbolIdentifier, in_signature: bool, )
Records that a class member references another class member.
Automatically adds references from the referencing member’s class to the referenced member’s class, and from the referencing member to the referenced member’s class. Skips self-references.
§Arguments
referencing_class_member: Tuple(ClassName, MemberName)making the reference.class_member: Tuple(ClassName, MemberName)being referenced.in_signature:trueif the reference occurs in a signature context,falseif in the body.
Sourcepub fn add_class_member_reference_to_symbol(
&mut self,
referencing_class_member: SymbolIdentifier,
symbol: StringIdentifier,
in_signature: bool,
)
pub fn add_class_member_reference_to_symbol( &mut self, referencing_class_member: SymbolIdentifier, symbol: StringIdentifier, in_signature: bool, )
Records that a class member references a top-level symbol.
Automatically adds a reference from the referencing member’s class to the referenced symbol. Skips references to the member’s own class. Skips body references if already referenced in signature.
§Arguments
referencing_class_member: Tuple(ClassName, MemberName)making the reference.symbol: The FQN of the symbol being referenced.in_signature:trueif the reference occurs in a signature context,falseif in the body.
Sourcepub fn add_reference_to_class_member(
&mut self,
scope: &ScopeContext<'_>,
class_member: SymbolIdentifier,
in_signature: bool,
)
pub fn add_reference_to_class_member( &mut self, scope: &ScopeContext<'_>, class_member: SymbolIdentifier, in_signature: bool, )
Convenience method to add a reference from the current function context to a class member.
Delegates to appropriate add_* methods based on the function context.
pub fn add_reference_for_method_call( &mut self, scope: &ScopeContext<'_>, method: &MethodIdentifier, )
pub fn add_reference_for_property_access( &mut self, scope: &ScopeContext<'_>, class_name: StringIdentifier, property_name: StringIdentifier, )
Sourcepub fn add_reference_to_overridden_class_member(
&mut self,
scope: &ScopeContext<'_>,
class_member: SymbolIdentifier,
)
pub fn add_reference_to_overridden_class_member( &mut self, scope: &ScopeContext<'_>, class_member: SymbolIdentifier, )
Convenience method to add a reference from the current function context to an overridden class member (e.g., parent::foo).
Delegates based on the function context.
Sourcepub fn add_reference_to_symbol(
&mut self,
scope: &ScopeContext<'_>,
symbol: StringIdentifier,
in_signature: bool,
)
pub fn add_reference_to_symbol( &mut self, scope: &ScopeContext<'_>, symbol: StringIdentifier, in_signature: bool, )
Convenience method to add a reference from the current function context to a top-level symbol.
Delegates to appropriate add_* methods based on the function context.
Sourcepub fn add_reference_to_functionlike_return(
&mut self,
referencing_functionlike: FunctionLikeIdentifier,
referenced_functionlike: FunctionLikeIdentifier,
)
pub fn add_reference_to_functionlike_return( &mut self, referencing_functionlike: FunctionLikeIdentifier, referenced_functionlike: FunctionLikeIdentifier, )
Records that one function/method references the return value of another. Used for dead code analysis.
Sourcepub fn extend(&mut self, other: Self)
pub fn extend(&mut self, other: Self)
Merges references from another SymbolReferences instance into this one.
Existing references are extended, not replaced.
Sourcepub fn get_referenced_symbols_and_members(&self) -> HashSet<&SymbolIdentifier>
pub fn get_referenced_symbols_and_members(&self) -> HashSet<&SymbolIdentifier>
Computes the set of all unique symbols and members that are referenced by any symbol/member tracked in the body or signature reference maps.
§Returns
A HashSet containing &(SymbolName, MemberName) tuples of all referenced items.
Sourcepub fn get_back_references(
&self,
) -> HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
pub fn get_back_references( &self, ) -> HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
Computes the inverse of the body and signature reference maps.
§Returns
A HashMap where the key is the referenced symbol/member (Symbol, Member) and the value
is a HashSet of referencing symbols/members (RefSymbol, RefMember).
Sourcepub fn get_references_to_symbol(
&self,
target_symbol: SymbolIdentifier,
) -> HashSet<&SymbolIdentifier>
pub fn get_references_to_symbol( &self, target_symbol: SymbolIdentifier, ) -> HashSet<&SymbolIdentifier>
Sourcepub fn get_referenced_symbols_and_members_with_counts(
&self,
) -> HashMap<SymbolIdentifier, u32>
pub fn get_referenced_symbols_and_members_with_counts( &self, ) -> HashMap<SymbolIdentifier, u32>
Computes the count of references for each unique symbol/member referenced in bodies or signatures.
§Returns
A HashMap where the key is the referenced symbol/member (Symbol, Member) and the value
is the total count (u32) of references to it.
Sourcepub fn get_referenced_overridden_class_members(
&self,
) -> HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
pub fn get_referenced_overridden_class_members( &self, ) -> HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
Computes the inverse of the overridden member reference map.
§Returns
A HashMap where the key is the overridden member (ParentSymbol, Member) and the value
is a HashSet of referencing symbols/members (RefSymbol, RefMember) that call it via parent::.
Sourcepub fn get_invalid_symbols(
&self,
codebase_diff: &CodebaseDiff,
) -> Option<(HashSet<SymbolIdentifier>, HashSet<StringIdentifier>)>
pub fn get_invalid_symbols( &self, codebase_diff: &CodebaseDiff, ) -> Option<(HashSet<SymbolIdentifier>, HashSet<StringIdentifier>)>
Calculates sets of invalid symbols and members based on detected code changes (CodebaseDiff).
Propagates invalidation through the dependency graph stored in signature references.
Limits propagation expense to avoid excessive computation on large changes.
§Arguments
codebase_diff: Information about added, deleted, or modified symbols/signatures.
§Returns
Some((invalid_signatures, partially_invalid)) on success, where invalid_signatures contains
all symbol/member pairs whose signature is invalid (including propagated ones), and partially_invalid
contains symbols with at least one invalid member.
Returns None if the propagation exceeds an expense limit (currently 5000 steps).
Sourcepub fn remove_references_from_invalid_symbols(
&mut self,
invalid_symbols_and_members: &HashSet<SymbolIdentifier>,
)
pub fn remove_references_from_invalid_symbols( &mut self, invalid_symbols_and_members: &HashSet<SymbolIdentifier>, )
Removes all references originating from symbols/members that are marked as invalid.
§Arguments
invalid_symbols_and_members: A set containing(SymbolName, MemberName)tuples for invalid items.
Sourcepub fn get_symbol_references_to_symbols(
&self,
) -> &HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
pub fn get_symbol_references_to_symbols( &self, ) -> &HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
Returns a reference to the map tracking references within symbol/member bodies.
Sourcepub fn get_symbol_references_to_symbols_in_signature(
&self,
) -> &HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
pub fn get_symbol_references_to_symbols_in_signature( &self, ) -> &HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
Returns a reference to the map tracking references within symbol/member signatures.
Sourcepub fn get_symbol_references_to_overridden_members(
&self,
) -> &HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
pub fn get_symbol_references_to_overridden_members( &self, ) -> &HashMap<SymbolIdentifier, HashSet<SymbolIdentifier>>
Returns a reference to the map tracking references to overridden members.
Sourcepub fn get_functionlike_references_to_functionlike_returns(
&self,
) -> &HashMap<FunctionLikeIdentifier, HashSet<FunctionLikeIdentifier>>
pub fn get_functionlike_references_to_functionlike_returns( &self, ) -> &HashMap<FunctionLikeIdentifier, HashSet<FunctionLikeIdentifier>>
Returns a reference to the map tracking references to function-like return values.
Trait Implementations§
Source§impl Clone for SymbolReferences
impl Clone for SymbolReferences
Source§fn clone(&self) -> SymbolReferences
fn clone(&self) -> SymbolReferences
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SymbolReferences
impl Debug for SymbolReferences
Source§impl Default for SymbolReferences
impl Default for SymbolReferences
Source§fn default() -> SymbolReferences
fn default() -> SymbolReferences
Source§impl<'de> Deserialize<'de> for SymbolReferences
impl<'de> Deserialize<'de> for SymbolReferences
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for SymbolReferences
impl PartialEq for SymbolReferences
Source§impl Serialize for SymbolReferences
impl Serialize for SymbolReferences
impl StructuralPartialEq for SymbolReferences
Auto Trait Implementations§
impl Freeze for SymbolReferences
impl RefUnwindSafe for SymbolReferences
impl Send for SymbolReferences
impl Sync for SymbolReferences
impl Unpin for SymbolReferences
impl UnwindSafe for SymbolReferences
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);