libninja_mir 0.1.0

mid level ir for libninja
Documentation
use crate::{Doc, Function, Ident, Import, Item, Visibility};
use proc_macro2::TokenStream;
use std::fmt::{Debug, Formatter};

#[derive(Default)]
pub struct Class<T> {
    pub vis: Visibility,
    pub name: Ident,
    pub doc: Option<Doc>,
    pub fields: Vec<Field<T>>,
    pub methods: Vec<Function<T>>,
    pub attributes: Vec<T>,
    pub lifetimes: Vec<String>,
    pub items: Vec<Item<TokenStream>>,
    pub imports: Vec<Import>,
}

#[derive(Debug, Default)]
pub struct Field<T> {
    pub name: Ident,
    pub ty: T,
    pub default: Option<T>,
    pub vis: Visibility,
    pub doc: Option<Doc>,
    pub optional: bool,
    pub attributes: Vec<T>,
}

impl Debug for Class<String> {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("Class")
            .field("name", &self.name)
            .field("doc", &self.doc)
            .field("fields", &self.fields)
            .field("vis", &self.vis)
            .finish()
    }
}