Skip to content

Commit

Permalink
Refactor symbols type 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Smit-create committed Aug 3, 2023
1 parent 1af2280 commit da80ea6
Showing 1 changed file with 9 additions and 29 deletions.
38 changes: 9 additions & 29 deletions src/libasr/pass/unique_symbols.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ class SymbolRenameVisitor: public ASR::BaseWalkVisitor<SymbolRenameVisitor> {
visit_symbols_1(x);
}

void visit_StructType(const ASR::StructType_t &x) {
template <typename T>
void visit_symbols_2(T &x) {
if (x.m_abi != ASR::abiType::BindC) {
if (all_symbols_mangling || should_mangle) {
ASR::symbol_t *sym = ASR::down_cast<ASR::symbol_t>((ASR::asr_t*)&x);
Expand All @@ -137,41 +138,20 @@ class SymbolRenameVisitor: public ASR::BaseWalkVisitor<SymbolRenameVisitor> {
}
}

void visit_StructType(const ASR::StructType_t &x) {
visit_symbols_2(x);
}

void visit_EnumType(const ASR::EnumType_t &x) {
if (x.m_abi != ASR::abiType::BindC) {
if (all_symbols_mangling || should_mangle) {
ASR::symbol_t *sym = ASR::down_cast<ASR::symbol_t>((ASR::asr_t*)&x);
sym_to_renamed[sym] = update_name(x.m_name);
}
}
for (auto &a : x.m_symtab->get_scope()) {
this->visit_symbol(*a.second);
}
visit_symbols_2(x);
}

void visit_UnionType(const ASR::UnionType_t &x) {
if (x.m_abi != ASR::abiType::BindC) {
if (all_symbols_mangling || should_mangle) {
ASR::symbol_t *sym = ASR::down_cast<ASR::symbol_t>((ASR::asr_t*)&x);
sym_to_renamed[sym] = update_name(x.m_name);
}
}
for (auto &a : x.m_symtab->get_scope()) {
this->visit_symbol(*a.second);
}
visit_symbols_2(x);
}


void visit_ClassType(const ASR::ClassType_t &x) {
if (x.m_abi != ASR::abiType::BindC) {
if (all_symbols_mangling || should_mangle) {
ASR::symbol_t *sym = ASR::down_cast<ASR::symbol_t>((ASR::asr_t*)&x);
sym_to_renamed[sym] = update_name(x.m_name);
}
}
for (auto &a : x.m_symtab->get_scope()) {
this->visit_symbol(*a.second);
}
visit_symbols_2(x);
}

void visit_ClassProcedure(const ASR::ClassProcedure_t &x) {
Expand Down

0 comments on commit da80ea6

Please sign in to comment.