This commit is contained in:
2026-04-17 01:49:43 -04:00
parent e5ae506a84
commit 2f91e454dd
16 changed files with 268 additions and 401 deletions
+1 -33
View File
@@ -12,39 +12,7 @@ pub use func::*;
pub use ident::*;
pub use item::*;
pub use param::*;
pub use struct_::*;
pub use ty::*;
use super::{DisplayCtx, FmtNode, Id, Lit, Node, NodeVec, Parsable, ParseCtx, Token};
use super::{DisplayCtx, Lit, Node, ParseCtx, Parsed, Token};
use crate::io::CompilerMsg;
def_nodes! {
exprs: Expr,
idents: Ident,
blocks: Body,
lits: Lit,
types: Type,
funcs: Func,
params: Param,
items: Item,
structs: Struct,
}
macro_rules! def_nodes {
{$($field:ident: $ty:ident,)*} => {
#[derive(Default)]
pub struct Nodes {
$(pub $field: NodeVec<$ty>,)*
}
$(impl Node for $ty {
fn vec(nodes: &Nodes) -> &NodeVec<Self> {
&nodes.$field
}
fn vec_mut(nodes: &mut Nodes) -> &mut NodeVec<Self> {
&mut nodes.$field
}
})*
};
}
use def_nodes;