use crate::symbol::constructor_symbol::ConstructorSymbol; use crate::symbol::function_symbol::FunctionSymbol; use crate::symbol::parameter_symbol::ParameterSymbol; use std::rc::Rc; pub enum CallableSymbol { Function(Rc), Constructor(Rc), ErrorPlaceholder, } impl CallableSymbol { pub fn parameters(&self) -> Vec> { match self { CallableSymbol::Function(function_symbol) => function_symbol.parameters().to_vec(), CallableSymbol::Constructor(constructor_symbol) => { constructor_symbol.parameters().to_vec() } CallableSymbol::ErrorPlaceholder => Vec::new(), } } }