syn_solidity/stmt/
expr.rs1use crate::{Expr, Spanned};
2use proc_macro2::Span;
3use std::fmt;
4use syn::{
5 parse::{Parse, ParseStream},
6 Result, Token,
7};
8
9#[derive(Clone)]
11pub struct StmtExpr {
12 pub expr: Expr,
13 pub semi_token: Token![;],
14}
15
16impl fmt::Debug for StmtExpr {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 f.debug_struct("StmtExpr").field("expr", &self.expr).finish()
19 }
20}
21
22impl Parse for StmtExpr {
23 fn parse(input: ParseStream<'_>) -> Result<Self> {
24 Ok(Self { expr: input.parse()?, semi_token: input.parse()? })
25 }
26}
27
28impl Spanned for StmtExpr {
29 fn span(&self) -> Span {
30 let span = self.expr.span();
31 span.join(self.semi_token.span).unwrap_or(span)
32 }
33
34 fn set_span(&mut self, span: Span) {
35 self.expr.set_span(span);
36 self.semi_token.span = span;
37 }
38}