@@ -1124,6 +1124,24 @@ class CommonVisitor : public AST::BaseVisitor<Struct> {
1124
1124
}
1125
1125
1126
1126
1127
+ ASR::asr_t * make_dummy_assignment (ASR::expr_t * expr, const Location &loc) {
1128
+ ASR::ttype_t * type = ASRUtils::expr_type (expr);
1129
+ std::string dummy_ret_name = current_scope->get_unique_name (" __lcompilers_dummy" , false );
1130
+ SetChar variable_dependencies_vec;
1131
+ variable_dependencies_vec.reserve (al, 1 );
1132
+ ASRUtils::collect_variable_dependencies (al, variable_dependencies_vec, type);
1133
+ ASR::asr_t * variable_asr = ASR::make_Variable_t (al, loc, current_scope,
1134
+ s2c (al, dummy_ret_name), variable_dependencies_vec.p ,
1135
+ variable_dependencies_vec.size (), ASR::intentType::Local,
1136
+ nullptr , nullptr , ASR::storage_typeType::Default,
1137
+ type, nullptr , ASR::abiType::Source, ASR::accessType::Public,
1138
+ ASR::presenceType::Required, false );
1139
+ ASR::symbol_t * variable_sym = ASR::down_cast<ASR::symbol_t >(variable_asr);
1140
+ current_scope->add_symbol (dummy_ret_name, variable_sym);
1141
+ ASR::expr_t * variable_var = ASRUtils::EXPR (ASR::make_Var_t (al, loc, variable_sym));
1142
+ return ASR::make_Assignment_t (al, loc, variable_var, expr, nullptr );
1143
+ }
1144
+
1127
1145
// Function to create appropriate call based on symbol type. If it is external
1128
1146
// generic symbol then it changes the name accordingly.
1129
1147
ASR::asr_t * make_call_helper (Allocator &al, ASR::symbol_t * s, SymbolTable *current_scope,
@@ -1290,20 +1308,7 @@ class CommonVisitor : public AST::BaseVisitor<Struct> {
1290
1308
s_generic, args_new.p , args_new.size (),
1291
1309
a_type, value, nullptr );
1292
1310
if ( ignore_return_value ) {
1293
- std::string dummy_ret_name = current_scope->get_unique_name (" __lcompilers_dummy" , false );
1294
- SetChar variable_dependencies_vec;
1295
- variable_dependencies_vec.reserve (al, 1 );
1296
- ASRUtils::collect_variable_dependencies (al, variable_dependencies_vec, a_type);
1297
- ASR::asr_t * variable_asr = ASR::make_Variable_t (al, loc, current_scope,
1298
- s2c (al, dummy_ret_name), variable_dependencies_vec.p ,
1299
- variable_dependencies_vec.size (), ASR::intentType::Local,
1300
- nullptr , nullptr , ASR::storage_typeType::Default,
1301
- a_type, nullptr , ASR::abiType::Source, ASR::accessType::Public,
1302
- ASR::presenceType::Required, false );
1303
- ASR::symbol_t * variable_sym = ASR::down_cast<ASR::symbol_t >(variable_asr);
1304
- current_scope->add_symbol (dummy_ret_name, variable_sym);
1305
- ASR::expr_t * variable_var = ASRUtils::EXPR (ASR::make_Var_t (al, loc, variable_sym));
1306
- return ASR::make_Assignment_t (al, loc, variable_var, ASRUtils::EXPR (func_call_asr), nullptr );
1311
+ return make_dummy_assignment (ASRUtils::EXPR (func_call_asr), loc);
1307
1312
} else {
1308
1313
return func_call_asr;
1309
1314
}
0 commit comments