bon_macros/util/
expr.rs
1use crate::util::prelude::*;
2
3pub(crate) trait ExprExt {
4 fn require_path_mod_style(&self) -> Result<&syn::Path>;
5}
6
7impl ExprExt for syn::Expr {
8 fn require_path_mod_style(&self) -> Result<&syn::Path> {
9 let expr = match self {
10 Self::Path(expr) => expr,
11 _ => bail!(self, "expected a simple path, like `foo::bar`"),
12 };
13
14 crate::parsing::reject_syntax("attribute", &expr.attrs.first())?;
15 crate::parsing::reject_syntax("<T as Trait> syntax", &expr.qself)?;
16
17 expr.path.require_mod_style()?;
18
19 Ok(&expr.path)
20 }
21}