wagon_codegen/nodes/
inverse.rs

1use quote::quote;
2use crate::SpannableIdent;
3
4use super::{Rc, ToTokensState};
5use proc_macro2::{TokenStream, Ident};
6use wagon_parser::parser::inverse::Inverse;
7
8impl<U> ToTokensState<U> for Inverse {
9    fn to_tokens(&self, state: &mut U, label: Rc<Ident>, attr_fun: fn(&mut U, Rc<Ident>, SpannableIdent)) -> TokenStream {
10        match self {
11            Self::Not(i) => {
12                let i_stream = i.to_tokens(state, label, attr_fun);
13                quote!(std::ops::Not::not(#i_stream)?)
14            },
15            Self::Comparison(c) => {
16                c.to_tokens(state, label, attr_fun)
17            },
18        }
19    }
20}