syn_solidity/yul/stmt/
walrus_token.rs

1use crate::Spanned;
2use proc_macro2::Span;
3use syn::{
4    parse::{Parse, ParseStream},
5    Result, Token,
6};
7
8/// Represents the walrus operator `:=`.
9#[derive(Clone, Debug)]
10pub struct WalrusToken {
11    pub colon: Token![:],
12    pub equals: Token![=],
13}
14
15impl Parse for WalrusToken {
16    fn parse(input: ParseStream<'_>) -> Result<Self> {
17        let colon = input.parse()?;
18        let equals = input.parse()?;
19
20        Ok(Self { colon, equals })
21    }
22}
23
24impl Spanned for WalrusToken {
25    fn span(&self) -> Span {
26        self.colon.span().join(self.equals.span()).unwrap_or(self.colon.span())
27    }
28
29    fn set_span(&mut self, span: Span) {
30        self.colon.set_span(span);
31        self.equals.set_span(span);
32    }
33}