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}