@@ -1326,6 +1326,7 @@ bool ConverterRefCount::VisitExplicitCastExpr(clang::ExplicitCastExpr *expr) {
13261326 StrCat (
13271327 std::format (" {}.reinterpret_cast::<{}>()" , ToString (expr->getSubExpr ()),
13281328 GetUnsafeTypeAsString (expr->getType ()->getPointeeType ())));
1329+ computed_expr_type_ = ComputedExprType::FreshPointer;
13291330 return false ;
13301331 case clang::Stmt::CStyleCastExprClass:
13311332 case clang::Stmt::CXXStaticCastExprClass:
@@ -1337,6 +1338,7 @@ bool ConverterRefCount::VisitExplicitCastExpr(clang::ExplicitCastExpr *expr) {
13371338 PushConversionKind push (*this , ConversionKind::Unboxed);
13381339 StrCat (std::format (" .reinterpret_cast::<{}>()" ,
13391340 ConvertPointeeType (expr->getType ())));
1341+ computed_expr_type_ = ComputedExprType::FreshPointer;
13401342 return false ;
13411343 } else if (expr->getType ()->isVoidPointerType () &&
13421344 expr->getSubExpr ()->getType ()->isPointerType ()) {
@@ -1350,6 +1352,7 @@ bool ConverterRefCount::VisitExplicitCastExpr(clang::ExplicitCastExpr *expr) {
13501352 StrCat (std::format (" {}.reinterpret_cast::<{}>()" ,
13511353 ToString (expr->getSubExpr ()),
13521354 ConvertPointeeType (expr->getType ())));
1355+ computed_expr_type_ = ComputedExprType::FreshPointer;
13531356 return false ;
13541357 }
13551358 return Converter::VisitExplicitCastExpr (expr);
@@ -1556,10 +1559,11 @@ void ConverterRefCount::ConvertUnionMemberAccessor(clang::MemberExpr *expr) {
15561559 " {}.reinterpret_cast::<{}>()" , str,
15571560 ToString (
15581561 member->getType ()->getAsArrayTypeUnsafe ()->getElementType ())));
1562+ computed_expr_type_ = ComputedExprType::FreshPointer;
15591563 } else {
15601564 StrCat (str);
1565+ computed_expr_type_ = ComputedExprType::Pointer;
15611566 }
1562- computed_expr_type_ = ComputedExprType::Pointer;
15631567 return ;
15641568 }
15651569
0 commit comments