lua_semantics/expression/
function.rsuse std::{cell::RefCell, rc::Rc};
use crate::{Block, VariableInfo};
use super::ExprLocalVariable;
#[derive(Debug, Clone)]
pub struct FunctionDefinition {
pub args: Vec<Rc<RefCell<VariableInfo>>>,
pub variadic: bool,
pub body: Block,
}
impl FunctionDefinition {
pub fn new(
args: Vec<Rc<RefCell<VariableInfo>>>,
variadic: bool,
body: Block,
) -> Self {
Self {
args,
variadic,
body,
}
}
}
#[derive(Debug, Clone)]
pub struct ExprFunctionObject {
pub upvalues_source: Vec<ExprLocalVariable>,
pub definition: FunctionDefinition,
}
impl ExprFunctionObject {
pub fn new(upvalues_source: Vec<ExprLocalVariable>, definition: FunctionDefinition) -> Self {
Self {
upvalues_source,
definition,
}
}
}