sway_parse/item/
item_const.rs1use crate::{Parse, ParseResult, Parser};
2
3use sway_ast::ItemConst;
4
5impl Parse for ItemConst {
6 fn parse(parser: &mut Parser) -> ParseResult<ItemConst> {
7 let pub_token = parser.take();
8 let const_token = parser.parse()?;
9 let name = parser.parse()?;
10 let ty_opt = match parser.take() {
11 Some(colon_token) => {
12 let ty = parser.parse()?;
13 Some((colon_token, ty))
14 }
15 None => None,
16 };
17 let eq_token_opt = parser.take();
18 let expr_opt = match &eq_token_opt {
19 Some(_eq) => Some(parser.parse()?),
20 None => None,
21 };
22 let semicolon_token = parser.peek().unwrap_or_default();
26 Ok(ItemConst {
27 pub_token,
28 const_token,
29 name,
30 ty_opt,
31 eq_token_opt,
32 expr_opt,
33 semicolon_token,
34 })
35 }
36}