@@ -1154,6 +1154,24 @@ class ReplaceSymbolicVisitor : public PassUtils::PassVisitor<ReplaceSymbolicVisi
1154
1154
sym, sym, call_args.p , call_args.n , ASRUtils::TYPE (ASR::make_Logical_t (al, x.base .base .loc , 4 )), nullptr , nullptr ));
1155
1155
print_tmp.push_back (function_call);
1156
1156
}
1157
+ } else if (ASR::is_a<ASR::ListItem_t>(*val)) {
1158
+ ASR::ListItem_t* list_item = ASR::down_cast<ASR::ListItem_t>(val);
1159
+ if (list_item->m_type ->type == ASR::ttypeType::SymbolicExpression) {
1160
+ ASR::ttype_t *CPtr_type = ASRUtils::TYPE (ASR::make_CPtr_t (al, x.base .base .loc ));
1161
+ ASR::symbol_t * basic_str_sym = declare_basic_str_function (al, x.base .base .loc , module_scope);
1162
+
1163
+ Vec<ASR::call_arg_t > call_args;
1164
+ call_args.reserve (al, 1 );
1165
+ ASR::call_arg_t call_arg;
1166
+ call_arg.loc = x.base .base .loc ;
1167
+ call_arg.m_value = ASRUtils::EXPR (ASR::make_ListItem_t (al, x.base .base .loc , list_item->m_a ,
1168
+ list_item->m_pos , CPtr_type, nullptr ));
1169
+ call_args.push_back (al, call_arg);
1170
+ ASR::expr_t * function_call = ASRUtils::EXPR (ASRUtils::make_FunctionCall_t_util (al, x.base .base .loc ,
1171
+ basic_str_sym, basic_str_sym, call_args.p , call_args.n ,
1172
+ ASRUtils::TYPE (ASR::make_Character_t (al, x.base .base .loc , 1 , -2 , nullptr )), nullptr , nullptr ));
1173
+ print_tmp.push_back (function_call);
1174
+ }
1157
1175
} else {
1158
1176
print_tmp.push_back (x.m_values [i]);
1159
1177
}
0 commit comments