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: FxHashMap<Arc<str>, Type>,
}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: FxHashMap<Arc<str>, Type>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 more