File tree Expand file tree Collapse file tree
cpp2rust/converter/models Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1499,6 +1499,7 @@ bool ConverterRefCount::VisitInitListExpr(clang::InitListExpr *expr) {
14991499}
15001500
15011501void ConverterRefCount::ConvertUnionMemberAccessor (clang::MemberExpr *expr) {
1502+ auto member = expr->getMemberDecl ();
15021503 std::string str;
15031504 {
15041505 Buffer buf (*this );
@@ -1509,15 +1510,24 @@ void ConverterRefCount::ConvertUnionMemberAccessor(clang::MemberExpr *expr) {
15091510 str += " ()" ;
15101511
15111512 if (isAddrOf ()) {
1512- StrCat (str);
1513+ if (member->getType ()->isArrayType ()) {
1514+ PushConversionKind push (*this , ConversionKind::Unboxed);
1515+ StrCat (std::format (
1516+ " {}.reinterpret_cast::<{}>()" , str,
1517+ ToString (
1518+ member->getType ()->getAsArrayTypeUnsafe ()->getElementType ())));
1519+ } else {
1520+ StrCat (str);
1521+ }
15131522 computed_expr_type_ = ComputedExprType::Pointer;
15141523 return ;
15151524 }
1525+
15161526 if (isLValue ()) {
15171527 pending_deref_.set (str);
15181528 return ;
15191529 }
1520- StrCat (DerefPtrExpr (str, expr-> getMemberDecl () ->getType ()));
1530+ StrCat (DerefPtrExpr (str, member ->getType ()));
15211531}
15221532
15231533bool ConverterRefCount::VisitMemberExpr (clang::MemberExpr *expr) {
You can’t perform that action at this time.
0 commit comments