use mago_reporting::Issue;
use mago_span::Span;
use mago_word::Word;
use crate::metadata::attribute::AttributeMetadata;
use crate::metadata::flags::MetadataFlags;
use crate::metadata::parameter::FunctionLikeParameterMetadata;
use crate::metadata::ttype::TypeMetadata;
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct PropertyHookMetadata {
pub name: Word,
pub span: Span,
pub flags: MetadataFlags,
pub parameter: Option<FunctionLikeParameterMetadata>,
pub returns_by_ref: bool,
pub is_abstract: bool,
pub attributes: Vec<AttributeMetadata>,
pub return_type_metadata: Option<TypeMetadata>,
pub has_docblock: bool,
pub issues: Vec<Issue>,
}
impl PropertyHookMetadata {
#[inline]
#[must_use]
pub fn is_get(&self) -> bool {
self.name.as_bytes() == b"get"
}
#[inline]
pub fn take_issues(&mut self) -> Vec<Issue> {
std::mem::take(&mut self.issues)
}
}