pub struct FunctionDef {Show 18 fields
pub fqn: Arc<str>,
pub short_name: Arc<str>,
pub params: Arc<[DeclaredParam]>,
pub return_type: Option<Arc<Type>>,
pub inferred_return_type: Option<Arc<Type>>,
pub template_params: Vec<TemplateParam>,
pub assertions: Vec<Assertion>,
pub throws: Vec<Arc<str>>,
pub deprecated: Option<Arc<str>>,
pub is_pure: bool,
pub is_mutation_free: bool,
pub is_external_mutation_free: bool,
pub no_named_arguments: bool,
pub location: Option<Location>,
pub docstring: Option<Arc<str>>,
pub taint_sink_params: Vec<(Arc<str>, Arc<str>)>,
pub is_taint_source: bool,
pub type_aliases: HashMap<Arc<str>, Type, FxBuildHasher>,
}Fields§
§fqn: Arc<str>§short_name: Arc<str>§params: Arc<[DeclaredParam]>§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.
inferred_return_type: Option<Arc<Type>>See MethodDef::inferred_return_type — Option<Arc<Type>> (8 B) for the
same demand-driven-inference reason.
template_params: Vec<TemplateParam>§assertions: Vec<Assertion>§throws: Vec<Arc<str>>§deprecated: Option<Arc<str>>§is_pure: bool§is_mutation_free: bool@psalm-mutation-free / @phpstan-mutation-free on a free function.
A free function has no $this, so this is behaviorally equivalent to
is_external_mutation_free here (both forbid mutating a parameter);
see MethodDef::is_mutation_free for the method-level (has-$this)
distinction this mirrors.
is_external_mutation_free: bool@psalm-external-mutation-free on a free function — must not mutate
any object passed as an argument.
no_named_arguments: bool@no-named-arguments — callers must not use named argument syntax.
location: Option<Location>§docstring: Option<Arc<str>>Plain-text description from the docblock (text before @tag lines).
Used for hover info.
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).
is_taint_source: bool@taint-source — this function’s return value is treated as tainted
(attacker-controlled) at every call site, mirroring @taint-sink’s
mechanism but marking the source side instead.
type_aliases: HashMap<Arc<str>, Type, FxBuildHasher>Type aliases declared on this function via @psalm-type / @phpstan-type.
Implementations§
Source§impl FunctionDef
impl FunctionDef
pub fn effective_return_type(&self) -> Option<&Type>
Trait Implementations§
Source§impl Clone for FunctionDef
impl Clone for FunctionDef
Source§fn clone(&self) -> FunctionDef
fn clone(&self) -> FunctionDef
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FunctionDef
impl Debug for FunctionDef
Source§impl<'de> Deserialize<'de> for FunctionDef
impl<'de> Deserialize<'de> for FunctionDef
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<FunctionDef, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<FunctionDef, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for FunctionDef
impl PartialEq for FunctionDef
Source§impl Serialize for FunctionDef
impl Serialize for FunctionDef
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for FunctionDef
Auto Trait Implementations§
impl Freeze for FunctionDef
impl RefUnwindSafe for FunctionDef
impl Send for FunctionDef
impl Sync for FunctionDef
impl Unpin for FunctionDef
impl UnsafeUnpin for FunctionDef
impl UnwindSafe for FunctionDef
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 more