mago_codex/metadata/
property_hook.rs1use mago_reporting::Issue;
2use mago_span::Span;
3use mago_word::Word;
4
5use crate::metadata::attribute::AttributeMetadata;
6use crate::metadata::flags::MetadataFlags;
7use crate::metadata::parameter::FunctionLikeParameterMetadata;
8use crate::metadata::ttype::TypeMetadata;
9
10#[derive(Clone, Debug, PartialEq, Eq)]
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
16#[non_exhaustive]
17pub struct PropertyHookMetadata {
18 pub name: Word,
20
21 pub span: Span,
23
24 pub flags: MetadataFlags,
26
27 pub parameter: Option<FunctionLikeParameterMetadata>,
30
31 pub returns_by_ref: bool,
33
34 pub is_abstract: bool,
36
37 pub attributes: Vec<AttributeMetadata>,
39
40 pub return_type_metadata: Option<TypeMetadata>,
42
43 pub has_docblock: bool,
45
46 pub issues: Vec<Issue>,
48}
49
50impl PropertyHookMetadata {
51 #[inline]
53 #[must_use]
54 pub fn is_get(&self) -> bool {
55 self.name.as_bytes() == b"get"
56 }
57
58 #[inline]
60 pub fn take_issues(&mut self) -> Vec<Issue> {
61 std::mem::take(&mut self.issues)
62 }
63}