use leo_ast::{Function, Input, Type, Variant};
use leo_span::Span;
use crate::SymbolTable;
#[derive(Debug, Clone)]
pub struct FinalizeData {
pub(crate) input: Vec<Input>,
pub(crate) output_type: Type,
}
#[derive(Clone, Debug)]
pub struct FunctionSymbol {
pub(crate) id: usize,
pub(crate) output_type: Type,
pub variant: Variant,
pub(crate) _span: Span,
pub(crate) input: Vec<Input>,
pub(crate) finalize: Option<FinalizeData>,
}
impl SymbolTable {
pub(crate) fn new_function_symbol(id: usize, func: &Function) -> FunctionSymbol {
FunctionSymbol {
id,
output_type: func.output_type.clone(),
variant: func.variant,
_span: func.span,
input: func.input.clone(),
finalize: func.finalize.as_ref().map(|finalize| FinalizeData {
input: finalize.input.clone(),
output_type: finalize.output_type.clone(),
}),
}
}
}