Skip to main content

gobject_ast/model/expression/
initializer_list.rs

1use serde::Serialize;
2
3use crate::model::{SourceLocation, expression::Expression};
4
5#[derive(Debug, Clone, Serialize)]
6pub struct InitializerListExpression {
7    #[serde(skip_serializing_if = "Vec::is_empty")]
8    pub items: Vec<InitializerItem>,
9    pub location: SourceLocation,
10}
11
12#[derive(Debug, Clone, Serialize)]
13pub struct InitializerItem {
14    /// Optional designator (.field or [index])
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub designator: Option<Designator>,
17    /// The value expression
18    pub value: Box<Expression>,
19}
20
21#[derive(Debug, Clone, Serialize)]
22pub enum Designator {
23    /// Field designator: .field_name
24    Field(String),
25    /// Array/subscript designator: [index]
26    Subscript(Box<Expression>),
27}