@@ -437,25 +437,40 @@ bool Converter::ConvertLambdaVarDecl(clang::VarDecl *decl) {
437437 return false ;
438438}
439439
440+ void ConvertVarDeclInitializer (clang::VarDecl *decl) {
441+ if (decl->hasInit ()) {
442+ ConvertVarInit (decl->getType (), decl->getInit ());
443+ } else if (!clang::isa<clang::ParmVarDecl>(decl)) {
444+ StrCat (ConvertVarDefaultInit (decl->getType ()));
445+ }
446+ }
447+
440448void Converter::ConvertVarDecl (clang::VarDecl *decl) {
441449 if (!ConvertVarDeclSkipInit (decl)) {
442450 // Skip global variables declared extern
443451 return ;
444452 }
445- auto qual_type = decl->getType ();
446453 PushConstInitializer static_init (*this , decl->isFileVarDecl () ||
447454 decl->isStaticLocal ());
448- if (decl->hasInit ()) {
449- StrCat (token::kAssign );
450- ConvertVarInit (qual_type, decl->getInit ());
451- } else if (!clang::isa<clang::ParmVarDecl>(decl)) {
452- StrCat (token::kAssign , ConvertVarDefaultInit (qual_type));
453- }
455+ StrCat (token::kAssign );
456+ ConvertVarDeclInitializer (decl);
454457 StrCat (token::kSemiColon );
455458}
456459
457460void Converter::ConvertGlobalVarDecl (clang::VarDecl *decl) {
458- ConvertVarDecl (decl);
461+ if (!ConvertVarDeclSkipInit (decl)) {
462+ // Skip global variables declared extern
463+ return ;
464+ }
465+ PushConstInitializer static_init (*this , decl->isFileVarDecl () ||
466+ decl->isStaticLocal ());
467+ StrCat (token::kAssign );
468+ StrCat (keyword_unsafe_);
469+ {
470+ PushBrace push (*this );
471+ ConvertVarDeclInitializer (decl);
472+ }
473+ StrCat (token::kSemiColon );
459474}
460475
461476bool Converter::VisitVarDecl (clang::VarDecl *decl) {
0 commit comments