28 lines
956 B
Rust
28 lines
956 B
Rust
use std::cell::RefCell;
|
|
use std::rc::Rc;
|
|
use crate::name_analysis::symbol::class_member_symbol::ClassMemberSymbol;
|
|
use crate::name_analysis::symbol::parameter_symbol::ParameterSymbol;
|
|
use crate::name_analysis::symbol::Symbol;
|
|
use crate::name_analysis::symbol::variable_symbol::VariableSymbol;
|
|
|
|
pub enum LVSymbol {
|
|
ClassMember(Rc<RefCell<ClassMemberSymbol>>),
|
|
Parameter(Rc<RefCell<ParameterSymbol>>),
|
|
Variable(Rc<RefCell<VariableSymbol>>),
|
|
}
|
|
|
|
impl LVSymbol {
|
|
pub fn to_symbol(self) -> Rc<RefCell<dyn Symbol>> {
|
|
match self {
|
|
LVSymbol::ClassMember(class_member_symbol) => {
|
|
class_member_symbol as Rc<RefCell<dyn Symbol>>
|
|
}
|
|
LVSymbol::Parameter(parameter_symbol) => {
|
|
parameter_symbol as Rc<RefCell<dyn Symbol>>
|
|
}
|
|
LVSymbol::Variable(variable_symbol) => {
|
|
variable_symbol as Rc<RefCell<dyn Symbol>>
|
|
}
|
|
}
|
|
}
|
|
} |