#[non_exhaustive]pub struct ClassLikeMetadata {Show 52 fields
pub name: Atom,
pub original_name: Atom,
pub span: Span,
pub direct_parent_interfaces: AtomSet,
pub all_parent_interfaces: AtomSet,
pub direct_parent_class: Option<Atom>,
pub require_extends: AtomSet,
pub require_implements: AtomSet,
pub all_parent_classes: AtomSet,
pub used_traits: AtomSet,
pub trait_alias_map: AtomMap<Atom>,
pub trait_visibility_map: AtomMap<Visibility>,
pub trait_final_map: AtomSet,
pub child_class_likes: Option<AtomSet>,
pub name_span: Option<Span>,
pub kind: SymbolKind,
pub template_types: TemplateTypes,
pub template_readonly: AtomSet,
pub template_variance: HashMap<usize, Variance>,
pub template_extended_offsets: AtomMap<Vec<TUnion>>,
pub template_extended_parameters: AtomMap<IndexMap<Atom, TUnion, RandomState>>,
pub template_type_extends_count: AtomMap<usize>,
pub template_type_implements_count: AtomMap<usize>,
pub template_type_uses_count: AtomMap<usize>,
pub methods: AtomSet,
pub pseudo_methods: AtomSet,
pub static_pseudo_methods: AtomSet,
pub declaring_method_ids: AtomMap<MethodIdentifier>,
pub appearing_method_ids: AtomMap<MethodIdentifier>,
pub inheritable_method_ids: AtomMap<MethodIdentifier>,
pub overridden_method_ids: AtomMap<IndexMap<Atom, MethodIdentifier, RandomState>>,
pub properties: AtomMap<PropertyMetadata>,
pub appearing_property_ids: AtomMap<Atom>,
pub declaring_property_ids: AtomMap<Atom>,
pub inheritable_property_ids: AtomMap<Atom>,
pub overridden_property_ids: AtomMap<AtomSet>,
pub initialized_properties: AtomSet,
pub constants: AtomMap<ClassLikeConstantMetadata>,
pub trait_constant_ids: AtomMap<Atom>,
pub enum_cases: AtomMap<EnumCaseMetadata>,
pub invalid_dependencies: AtomSet,
pub attributes: Vec<AttributeMetadata>,
pub enum_type: Option<TAtomic>,
pub has_sealed_methods: Option<bool>,
pub has_sealed_properties: Option<bool>,
pub permitted_inheritors: Option<AtomSet>,
pub issues: Vec<Issue>,
pub attribute_flags: Option<AttributeFlags>,
pub flags: MetadataFlags,
pub type_aliases: AtomMap<TypeMetadata>,
pub imported_type_aliases: AtomMap<(Atom, Atom, Span)>,
pub mixins: Vec<TUnion>,
}Expand description
Contains comprehensive metadata for a PHP class-like structure (class, interface, trait, enum).
Aggregates information about inheritance, traits, generics, methods, properties, constants, attributes, docblock tags, analysis flags, and more.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.name: Atom§original_name: Atom§span: Span§direct_parent_interfaces: AtomSet§all_parent_interfaces: AtomSet§direct_parent_class: Option<Atom>§require_extends: AtomSet§require_implements: AtomSet§all_parent_classes: AtomSet§used_traits: AtomSet§trait_alias_map: AtomMap<Atom>§trait_visibility_map: AtomMap<Visibility>§trait_final_map: AtomSet§child_class_likes: Option<AtomSet>§name_span: Option<Span>§kind: SymbolKind§template_types: TemplateTypes§template_readonly: AtomSet§template_variance: HashMap<usize, Variance>§template_extended_offsets: AtomMap<Vec<TUnion>>§template_extended_parameters: AtomMap<IndexMap<Atom, TUnion, RandomState>>§template_type_extends_count: AtomMap<usize>§template_type_implements_count: AtomMap<usize>§template_type_uses_count: AtomMap<usize>§methods: AtomSet§pseudo_methods: AtomSet§static_pseudo_methods: AtomSet§declaring_method_ids: AtomMap<MethodIdentifier>§appearing_method_ids: AtomMap<MethodIdentifier>§inheritable_method_ids: AtomMap<MethodIdentifier>§overridden_method_ids: AtomMap<IndexMap<Atom, MethodIdentifier, RandomState>>§properties: AtomMap<PropertyMetadata>§appearing_property_ids: AtomMap<Atom>§declaring_property_ids: AtomMap<Atom>§inheritable_property_ids: AtomMap<Atom>§overridden_property_ids: AtomMap<AtomSet>§initialized_properties: AtomSet§constants: AtomMap<ClassLikeConstantMetadata>§trait_constant_ids: AtomMap<Atom>§enum_cases: AtomMap<EnumCaseMetadata>§invalid_dependencies: AtomSet§attributes: Vec<AttributeMetadata>§enum_type: Option<TAtomic>§has_sealed_methods: Option<bool>§has_sealed_properties: Option<bool>§permitted_inheritors: Option<AtomSet>§issues: Vec<Issue>§attribute_flags: Option<AttributeFlags>§flags: MetadataFlags§type_aliases: AtomMap<TypeMetadata>§imported_type_aliases: AtomMap<(Atom, Atom, Span)>Imported type aliases in the form of (from_fqcn, type_name, span)
mixins: Vec<TUnion>Mixin types from @mixin annotations - these types’ methods/properties can be accessed via magic methods (__call, __get, __set, __callStatic)
Implementations§
Source§impl ClassLikeMetadata
impl ClassLikeMetadata
pub fn new( name: Atom, original_name: Atom, span: Span, name_span: Option<Span>, flags: MetadataFlags, ) -> ClassLikeMetadata
Sourcepub fn get_trait_alias_map(&self) -> &AtomMap<Atom>
pub fn get_trait_alias_map(&self) -> &AtomMap<Atom>
Returns a reference to the map of trait method aliases.
Sourcepub fn get_template_type_names(&self) -> Vec<Atom>
pub fn get_template_type_names(&self) -> Vec<Atom>
Returns a vector of the generic type parameter names.
Sourcepub fn get_template_type(&self, name: &Atom) -> Option<&GenericTemplate>
pub fn get_template_type(&self, name: &Atom) -> Option<&GenericTemplate>
Returns type parameters for a specific generic parameter name.
Sourcepub fn get_template_type_with_index(
&self,
name: &Atom,
) -> Option<(usize, &GenericTemplate)>
pub fn get_template_type_with_index( &self, name: &Atom, ) -> Option<(usize, &GenericTemplate)>
Returns type parameters for a specific generic parameter name with its index.
pub fn get_template_for_index( &self, index: usize, ) -> Option<(Atom, &GenericTemplate)>
pub fn get_template_name_for_index(&self, index: usize) -> Option<Atom>
pub fn get_template_index_for_name(&self, name: &Atom) -> Option<usize>
Sourcepub fn has_parent(&self, parent: &Atom) -> bool
pub fn has_parent(&self, parent: &Atom) -> bool
Checks if a specific parent is either a parent class or interface.
Sourcepub fn has_template_extended_parameter(&self, parent: &Atom) -> bool
pub fn has_template_extended_parameter(&self, parent: &Atom) -> bool
Checks if a specific parent has template extended parameters.
Sourcepub fn has_appearing_method(&self, method: &Atom) -> bool
pub fn has_appearing_method(&self, method: &Atom) -> bool
Checks if a specific method appears in this class-like.
Sourcepub fn get_property_names(&self) -> AtomSet
pub fn get_property_names(&self) -> AtomSet
Returns a vector of property names.
Sourcepub fn has_appearing_property(&self, name: &Atom) -> bool
pub fn has_appearing_property(&self, name: &Atom) -> bool
Checks if a specific property appears in this class-like.
Sourcepub fn has_declaring_property(&self, name: &Atom) -> bool
pub fn has_declaring_property(&self, name: &Atom) -> bool
Checks if a specific property is declared in this class-like.
Sourcepub fn take_issues(&mut self) -> Vec<Issue>
pub fn take_issues(&mut self) -> Vec<Issue>
Takes ownership of the issues found for this class-like structure.
Sourcepub fn add_direct_parent_interface(&mut self, interface: Atom)
pub fn add_direct_parent_interface(&mut self, interface: Atom)
Adds a single direct parent interface.
Sourcepub fn add_all_parent_interface(&mut self, interface: Atom)
pub fn add_all_parent_interface(&mut self, interface: Atom)
Adds a single interface to the list of all parent interfaces. Use with caution, normally derived.
Sourcepub fn add_all_parent_interfaces(
&mut self,
interfaces: impl IntoIterator<Item = Atom>,
)
pub fn add_all_parent_interfaces( &mut self, interfaces: impl IntoIterator<Item = Atom>, )
Adds multiple interfaces to the list of all parent interfaces. Use with caution.
Sourcepub fn add_all_parent_classes(
&mut self,
classes: impl IntoIterator<Item = Atom>,
)
pub fn add_all_parent_classes( &mut self, classes: impl IntoIterator<Item = Atom>, )
Adds multiple ancestor classes. Use with caution.
Sourcepub fn add_used_trait(&mut self, trait_name: Atom) -> bool
pub fn add_used_trait(&mut self, trait_name: Atom) -> bool
Adds a single used trait. Returns true if the trait was not already present.
Sourcepub fn add_used_traits(&mut self, traits: impl IntoIterator<Item = Atom>)
pub fn add_used_traits(&mut self, traits: impl IntoIterator<Item = Atom>)
Adds multiple used traits.
Sourcepub fn add_trait_alias(&mut self, method: Atom, alias: Atom) -> Option<Atom>
pub fn add_trait_alias(&mut self, method: Atom, alias: Atom) -> Option<Atom>
Adds or updates a single trait alias. Returns the previous original name if one existed for the alias.
Sourcepub fn add_trait_visibility(
&mut self,
method: Atom,
visibility: Visibility,
) -> Option<Visibility>
pub fn add_trait_visibility( &mut self, method: Atom, visibility: Visibility, ) -> Option<Visibility>
Adds or updates a single trait visibility override. Returns the previous visibility if one existed.
Sourcepub fn add_template_type(&mut self, name: Atom, constraint: GenericTemplate)
pub fn add_template_type(&mut self, name: Atom, constraint: GenericTemplate)
Adds a single template type definition.
Sourcepub fn add_template_variance_parameter(
&mut self,
index: usize,
variance: Variance,
) -> Option<Variance>
pub fn add_template_variance_parameter( &mut self, index: usize, variance: Variance, ) -> Option<Variance>
Adds or updates the variance for a specific parameter index. Returns the previous variance if one existed.
Sourcepub fn add_template_extended_offset(
&mut self,
name: Atom,
types: Vec<TUnion>,
) -> Option<Vec<TUnion>>
pub fn add_template_extended_offset( &mut self, name: Atom, types: Vec<TUnion>, ) -> Option<Vec<TUnion>>
Adds or replaces the offset types for a specific template parameter name.
Sourcepub fn extend_template_extended_parameters(
&mut self,
template_extended_parameters: AtomMap<IndexMap<Atom, TUnion, RandomState>>,
)
pub fn extend_template_extended_parameters( &mut self, template_extended_parameters: AtomMap<IndexMap<Atom, TUnion, RandomState>>, )
Adds or replaces the resolved parameters for a specific parent FQCN.
Sourcepub fn add_template_extended_parameter(
&mut self,
parent_fqcn: Atom,
parameter_name: Atom,
parameter_type: TUnion,
) -> Option<TUnion>
pub fn add_template_extended_parameter( &mut self, parent_fqcn: Atom, parameter_name: Atom, parameter_type: TUnion, ) -> Option<TUnion>
Adds or replaces a single resolved parameter for the parent FQCN.
Sourcepub fn add_declaring_method_id(
&mut self,
method: Atom,
declaring_method_id: MethodIdentifier,
) -> Option<MethodIdentifier>
pub fn add_declaring_method_id( &mut self, method: Atom, declaring_method_id: MethodIdentifier, ) -> Option<MethodIdentifier>
Adds or updates the declaring method identifier for a method name.
Sourcepub fn add_appearing_method_id(
&mut self,
method: Atom,
appearing_method_id: MethodIdentifier,
) -> Option<MethodIdentifier>
pub fn add_appearing_method_id( &mut self, method: Atom, appearing_method_id: MethodIdentifier, ) -> Option<MethodIdentifier>
Adds or updates the appearing method identifier for a method name.
Sourcepub fn add_overridden_method_parent(
&mut self,
method: Atom,
parent_method_id: MethodIdentifier,
) -> Option<MethodIdentifier>
pub fn add_overridden_method_parent( &mut self, method: Atom, parent_method_id: MethodIdentifier, ) -> Option<MethodIdentifier>
Adds a parent method identifier to the map for an overridden method. Initializes map if needed. Returns the previous value if one existed.
Sourcepub fn add_property(
&mut self,
name: Atom,
property_metadata: PropertyMetadata,
) -> Option<PropertyMetadata>
pub fn add_property( &mut self, name: Atom, property_metadata: PropertyMetadata, ) -> Option<PropertyMetadata>
Adds or updates a property’s metadata. Returns the previous metadata if the property existed.
Sourcepub fn add_property_metadata(
&mut self,
property_metadata: PropertyMetadata,
) -> Option<PropertyMetadata>
pub fn add_property_metadata( &mut self, property_metadata: PropertyMetadata, ) -> Option<PropertyMetadata>
Adds or updates a property’s metadata using just the property metadata. Returns the previous metadata if the property existed.
Sourcepub fn add_declaring_property_id(
&mut self,
prop: Atom,
declaring_fqcn: Atom,
) -> Option<Atom>
pub fn add_declaring_property_id( &mut self, prop: Atom, declaring_fqcn: Atom, ) -> Option<Atom>
Adds or updates the declaring class FQCN for a property name.
pub fn get_missing_required_interface<'a>( &self, other: &'a ClassLikeMetadata, ) -> Option<&'a Atom>
pub fn get_missing_required_extends<'a>( &self, other: &'a ClassLikeMetadata, ) -> Option<&'a Atom>
pub fn is_permitted_to_inherit(&self, other: &ClassLikeMetadata) -> bool
pub fn mark_as_populated(&mut self)
pub fn shrink_to_fit(&mut self)
Trait Implementations§
Source§impl Clone for ClassLikeMetadata
impl Clone for ClassLikeMetadata
Source§fn clone(&self) -> ClassLikeMetadata
fn clone(&self) -> ClassLikeMetadata
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ClassLikeMetadata
impl Debug for ClassLikeMetadata
Source§impl<'de> Deserialize<'de> for ClassLikeMetadata
impl<'de> Deserialize<'de> for ClassLikeMetadata
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 ClassLikeMetadata
impl PartialEq for ClassLikeMetadata
Source§impl Serialize for ClassLikeMetadata
impl Serialize for ClassLikeMetadata
impl Eq for ClassLikeMetadata
impl StructuralPartialEq for ClassLikeMetadata
Auto Trait Implementations§
impl Freeze for ClassLikeMetadata
impl RefUnwindSafe for ClassLikeMetadata
impl Send for ClassLikeMetadata
impl Sync for ClassLikeMetadata
impl Unpin for ClassLikeMetadata
impl UnwindSafe for ClassLikeMetadata
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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);