sway_ast/item/
item_const.rs

1use crate::priv_prelude::*;
2
3#[derive(Clone, Debug, Serialize)]
4pub struct ItemConst {
5    pub visibility: Option<PubToken>,
6    pub const_token: ConstToken,
7    pub name: Ident,
8    pub ty_opt: Option<(ColonToken, Ty)>,
9    pub eq_token_opt: Option<EqToken>,
10    pub expr_opt: Option<Expr>,
11    pub semicolon_token: SemicolonToken,
12}
13
14impl Spanned for ItemConst {
15    fn span(&self) -> Span {
16        let start = match &self.visibility {
17            Some(pub_token) => pub_token.span(),
18            None => self.const_token.span(),
19        };
20        let end = match &self.expr_opt {
21            Some(expr) => expr.span(),
22            None => match &self.ty_opt {
23                Some((_colon, ty)) => ty.span(),
24                None => self.name.span(),
25            },
26        };
27        Span::join(start, &end)
28    }
29}