use crate::name_analysis::symbol::{ClassMemberSymbol, ClassSymbol, FunctionSymbol, ParameterSymbol, Symbol, VariableSymbol}; use std::cell::RefCell; use std::rc::Rc; pub enum ExpressibleSymbol { Class(Rc>), Function(Rc>), ClassMember(Rc>), Parameter(Rc>), Variable(Rc>), } impl ExpressibleSymbol { pub fn to_symbol(self) -> Rc> { match self { ExpressibleSymbol::Class(class_symbol) => { class_symbol as Rc> } ExpressibleSymbol::Function(function_symbol) => { function_symbol as Rc> } ExpressibleSymbol::ClassMember(class_member_symbol) => { class_member_symbol as Rc> } ExpressibleSymbol::Parameter(parameter_symbol) => { parameter_symbol as Rc> } ExpressibleSymbol::Variable(variable_symbol) => { variable_symbol as Rc> } } } }