From da80ea67de558a4c0c3802ba880098cb170cfca2 Mon Sep 17 00:00:00 2001 From: Smit-create Date: Thu, 3 Aug 2023 18:26:26 +0530 Subject: [PATCH] Refactor symbols type 2 --- src/libasr/pass/unique_symbols.cpp | 38 +++++++----------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/src/libasr/pass/unique_symbols.cpp b/src/libasr/pass/unique_symbols.cpp index d2ecc83f1f..40d9938e59 100644 --- a/src/libasr/pass/unique_symbols.cpp +++ b/src/libasr/pass/unique_symbols.cpp @@ -125,7 +125,8 @@ class SymbolRenameVisitor: public ASR::BaseWalkVisitor { visit_symbols_1(x); } - void visit_StructType(const ASR::StructType_t &x) { + template + 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::asr_t*)&x); @@ -137,41 +138,20 @@ class SymbolRenameVisitor: public ASR::BaseWalkVisitor { } } + 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::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::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::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) {