use crate::lower::ir;
use microcad_lang_base::{SrcRef, SrcReferrer};
use microcad_lang_proc_macros::Identifiable;
#[derive(Clone, Debug, Identifiable)]
pub struct FunctionDefinition {
pub keyword_ref: SrcRef,
pub doc: ir::DocBlock,
pub visibility: ir::Visibility,
pub(crate) id: ir::Identifier,
pub signature: ir::FunctionSignature,
pub body: ir::Body,
}
impl SrcReferrer for FunctionDefinition {
fn src_ref(&self) -> SrcRef {
self.id.src_ref()
}
}
impl std::fmt::Display for FunctionDefinition {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "fn {}{}", self.id, self.signature)
}
}