@@ -6371,10 +6371,22 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
63716371 {fmt_ptr, fmt_ptr1});
63726372 }
63736373 if (x.m_msg ) {
6374- char * s = ASR::down_cast<ASR::StringConstant_t>(x.m_msg )->m_s ;
6375- llvm::Value *fmt_ptr = builder->CreateGlobalStringPtr (" AssertionError: %s\n " );
6376- llvm::Value *fmt_ptr2 = builder->CreateGlobalStringPtr (s);
6377- print_error (context, *module , *builder, {fmt_ptr, fmt_ptr2});
6374+ std::vector<std::string> fmt;
6375+ std::vector<llvm::Value *> args;
6376+ fmt.push_back (" %s" );
6377+ args.push_back (builder->CreateGlobalStringPtr (" AssertionError: " ));
6378+ compute_fmt_specifier_and_arg (fmt, args, x.m_msg , x.base .base .loc );
6379+ fmt.push_back (" %s" );
6380+ args.push_back (builder->CreateGlobalStringPtr (" \n " ));
6381+ std::string fmt_str;
6382+ for (size_t i=0 ; i<fmt.size (); i++) {
6383+ fmt_str += fmt[i];
6384+ }
6385+ llvm::Value *fmt_ptr = builder->CreateGlobalStringPtr (fmt_str);
6386+ std::vector<llvm::Value *> print_error_args;
6387+ print_error_args.push_back (fmt_ptr);
6388+ print_error_args.insert (print_error_args.end (), args.begin (), args.end ());
6389+ print_error (context, *module , *builder, print_error_args);
63786390 } else {
63796391 llvm::Value *fmt_ptr = builder->CreateGlobalStringPtr (" AssertionError\n " );
63806392 print_error (context, *module , *builder, {fmt_ptr});
0 commit comments