1use syn::{
2 parse::{self, Parse, ParseStream},
3 Expr, Token,
4};
5
6use crate::function_like::log;
7
8pub(crate) struct Args {
9 pub(crate) left: Expr,
10 pub(crate) right: Expr,
11 pub(crate) log_args: Option<log::Args>,
12}
13
14impl Parse for Args {
15 fn parse(input: ParseStream) -> parse::Result<Self> {
16 let left = input.parse()?;
17 let _comma: Token![,] = input.parse()?;
18 let right = input.parse()?;
19
20 if input.is_empty() {
21 // assert_eq!(a, b)
22 return Ok(Args {
23 left,
24 right,
25 log_args: None,
26 });
27 }
28
29 let _comma: Token![,] = input.parse()?;
30
31 if input.is_empty() {
32 // assert_eq!(a, b,)
33 Ok(Args {
34 left,
35 right,
36 log_args: None,
37 })
38 } else {
39 // assert_eq!(a, b, "c", d)
40 Ok(Args {
41 left,
42 right,
43 log_args: Some(input.parse()?),
44 })
45 }
46 }
47}
48