Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 11e44cb

Browse files
committed
Prepend module name to global_stmts(), global_init()
This makes global_init() and global_stmts() unique across modules
1 parent f47d3dd commit 11e44cb

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/lpython/semantics/python_ast_to_asr.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -426,26 +426,26 @@ void get_calls_to_global_init_and_stmts(Allocator &al, const Location &loc, Symb
426426
ASR::Module_t* mod, std::vector<ASR::asr_t *> &tmp_vec) {
427427

428428
std::string mod_name = mod->m_name;
429-
std::string g_func_name = mod_name + "@global_initializer";
430-
ASR::symbol_t *g_func = mod->m_symtab->get_symbol("global_initializer");
429+
std::string g_func_name = mod_name + "__global_initializer";
430+
ASR::symbol_t *g_func = mod->m_symtab->get_symbol(g_func_name);
431431
if (g_func && !scope->get_symbol(g_func_name)) {
432432
ASR::symbol_t *es = ASR::down_cast<ASR::symbol_t>(
433433
ASR::make_ExternalSymbol_t(al, mod->base.base.loc,
434434
scope, s2c(al, g_func_name), g_func,
435-
s2c(al, mod_name), nullptr, 0, s2c(al, "global_initializer"),
435+
s2c(al, mod_name), nullptr, 0, s2c(al, g_func_name),
436436
ASR::accessType::Public));
437437
scope->add_symbol(g_func_name, es);
438438
tmp_vec.push_back(ASRUtils::make_SubroutineCall_t_util(al, loc,
439439
es, g_func, nullptr, 0, nullptr, nullptr, false));
440440
}
441441

442-
g_func_name = mod_name + "@global_statements";
443-
g_func = mod->m_symtab->get_symbol("global_statements");
442+
g_func_name = mod_name + "__global_statements";
443+
g_func = mod->m_symtab->get_symbol(g_func_name);
444444
if (g_func && !scope->get_symbol(g_func_name)) {
445445
ASR::symbol_t *es = ASR::down_cast<ASR::symbol_t>(
446446
ASR::make_ExternalSymbol_t(al, mod->base.base.loc,
447447
scope, s2c(al, g_func_name), g_func,
448-
s2c(al, mod_name), nullptr, 0, s2c(al, "global_statements"),
448+
s2c(al, mod_name), nullptr, 0, s2c(al, g_func_name),
449449
ASR::accessType::Public));
450450
scope->add_symbol(g_func_name, es);
451451
tmp_vec.push_back(ASRUtils::make_SubroutineCall_t_util(al, loc,
@@ -4784,7 +4784,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
47844784
// `pass_wrap_global_stmts_into_function` pass
47854785
unit->m_items = global_init.p;
47864786
unit->n_items = global_init.size();
4787-
std::string func_name = "global_initializer";
4787+
std::string func_name = module_name + "__global_initializer";
47884788
LCompilers::PassOptions pass_options;
47894789
pass_options.run_fun = func_name;
47904790
pass_wrap_global_stmts(al, *unit, pass_options);
@@ -4807,7 +4807,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
48074807
if (items.n > 0) {
48084808
unit->m_items = items.p;
48094809
unit->n_items = items.size();
4810-
std::string func_name = "global_statements";
4810+
std::string func_name = module_name + "__global_statements";
48114811
// Wrap all the global statements into a Function
48124812
LCompilers::PassOptions pass_options;
48134813
pass_options.run_fun = func_name;

0 commit comments

Comments
 (0)