Skip to main content

MethodDef

Struct MethodDef 

Source
pub struct MethodDef {
Show 24 fields pub name: Arc<str>, pub fqcn: Arc<str>, pub params: Arc<[FnParam]>, pub return_type: Option<Arc<Type>>, pub inferred_return_type: Option<Arc<Type>>, pub visibility: Visibility, pub is_static: bool, pub is_abstract: bool, pub is_final: bool, pub is_constructor: bool, pub template_params: Vec<TemplateParam>, pub assertions: Vec<Assertion>, pub throws: Vec<Arc<str>>, pub deprecated: Option<Arc<str>>, pub is_internal: bool, pub is_pure: bool, pub no_named_arguments: bool, pub is_override: bool, pub location: Option<Location>, pub docstring: Option<Arc<str>>, pub is_virtual: bool, pub taint_sink_params: Vec<(Arc<str>, Arc<str>)>, pub if_this_is: Option<Arc<Type>>, pub is_inherit_doc: bool,
}

Fields§

§name: Arc<str>§fqcn: Arc<str>§params: Arc<[FnParam]>§return_type: Option<Arc<Type>>

Type from annotation (@return / native type hint). None means unannotated. Stored as Option<Arc<Type>> to enable deduplication of common return types (e.g., void, string, mixed, bool) across thousands of methods.

§inferred_return_type: Option<Arc<Type>>

Type inferred from body analysis. Stored as Option<Arc<Type>> (8 B) rather than inline Option<Type> (176 B, no niche) — inference is now demand-driven via salsa (inferred_*_return_type_demand), so this field is a rarely/never populated fallback; shrinking it saves ~168 B on every MethodDef.

§visibility: Visibility§is_static: bool§is_abstract: bool§is_final: bool§is_constructor: bool§template_params: Vec<TemplateParam>§assertions: Vec<Assertion>§throws: Vec<Arc<str>>§deprecated: Option<Arc<str>>§is_internal: bool§is_pure: bool§no_named_arguments: bool

@no-named-arguments — callers must not use named argument syntax.

§is_override: bool

True when the method has the #[Override] PHP attribute.

§location: Option<Location>§docstring: Option<Arc<str>>

Plain-text description from the docblock (text before @tag lines). Used for hover info.

§is_virtual: bool

True for methods added via @method docblock annotations. Virtual methods must not be required as concrete interface implementations.

§taint_sink_params: Vec<(Arc<str>, Arc<str>)>

Parameters declared as taint sinks via @taint-sink <kind> $param. Each entry is (param_name_without_dollar, sink_kind_string).

§if_this_is: Option<Arc<Type>>

@if-this-is Type — the resolved constraint a receiver’s type must satisfy for this method to be callable. None when absent.

§is_inherit_doc: bool

True when the method has @inheritDoc / {@inheritDoc} in its docblock. The analyzer inherits the parent’s return type, param types, throws, and template params when this method has none of its own.

Implementations§

Trait Implementations§

Source§

impl Clone for MethodDef

Source§

fn clone(&self) -> MethodDef

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MethodDef

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MethodDef

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for MethodDef

Source§

fn eq(&self, other: &MethodDef) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for MethodDef

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for MethodDef

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.