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 @@ -1488,6 +1488,7 @@ bool ConverterRefCount::VisitInitListExpr(clang::InitListExpr *expr) {
14881488}
14891489
14901490void ConverterRefCount::ConvertUnionMemberAccessor (clang::MemberExpr *expr) {
1491+ auto member = expr->getMemberDecl ();
14911492 std::string str;
14921493 {
14931494 Buffer buf (*this );
@@ -1498,15 +1499,24 @@ void ConverterRefCount::ConvertUnionMemberAccessor(clang::MemberExpr *expr) {
14981499 str += " ()" ;
14991500
15001501 if (isAddrOf ()) {
1501- StrCat (str);
1502+ if (member->getType ()->isArrayType ()) {
1503+ PushConversionKind push (*this , ConversionKind::Unboxed);
1504+ StrCat (std::format (
1505+ " {}.reinterpret_cast::<{}>()" , str,
1506+ ToString (
1507+ member->getType ()->getAsArrayTypeUnsafe ()->getElementType ())));
1508+ } else {
1509+ StrCat (str);
1510+ }
15021511 computed_expr_type_ = ComputedExprType::Pointer;
15031512 return ;
15041513 }
1514+
15051515 if (isLValue ()) {
15061516 pending_deref_.set (str);
15071517 return ;
15081518 }
1509- StrCat (DerefPtrExpr (str, expr-> getMemberDecl () ->getType ()));
1519+ StrCat (DerefPtrExpr (str, member ->getType ()));
15101520}
15111521
15121522bool ConverterRefCount::VisitMemberExpr (clang::MemberExpr *expr) {
You can’t perform that action at this time.
0 commit comments