Skip to content

Commit 779e33a

Browse files
committed
Drop the let _ = expr; pattern for void casts
1 parent c771573 commit 779e33a

3 files changed

Lines changed: 10 additions & 22 deletions

File tree

cpp2rust/converter/converter.cpp

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1865,21 +1865,12 @@ bool Converter::VisitImplicitCastExpr(clang::ImplicitCastExpr *expr) {
18651865
return false;
18661866
}
18671867

1868-
void Converter::ConvertVoidCastExpr(clang::ExplicitCastExpr *expr) {
1869-
PushExprKind push(*this, ExprKind::Void);
1870-
StrCat("let _ = ");
1871-
Convert(expr->getSubExpr());
1872-
if (expr->getSubExpr()->isLValue()) {
1873-
StrCat(".clone()");
1874-
}
1875-
StrCat(token::kSemiColon);
1876-
}
1877-
18781868
bool Converter::VisitExplicitCastExpr(clang::ExplicitCastExpr *expr) {
18791869
auto type = expr->getTypeAsWritten();
18801870
auto *sub_expr = expr->getSubExpr();
18811871
if (type->isVoidType()) {
1882-
ConvertVoidCastExpr(expr);
1872+
PushExprKind push(*this, ExprKind::Void);
1873+
Convert(expr->getSubExpr());
18831874
return false;
18841875
}
18851876
switch (expr->getStmtClass()) {
@@ -2263,14 +2254,12 @@ bool Converter::VisitDeclRefExpr(clang::DeclRefExpr *expr) {
22632254

22642255
bool Converter::VisitParenExpr(clang::ParenExpr *expr) {
22652256
// Comma operator becomes (A, B, C) -> { A; B; C }
2266-
auto *bin = clang::dyn_cast<clang::BinaryOperator>(expr->getSubExpr());
2267-
// Void cast becomes ((void) A) -> { let _ = A; }
2268-
auto *cast = clang::dyn_cast<clang::ExplicitCastExpr>(expr->getSubExpr());
2269-
if ((bin && bin->isCommaOp()) ||
2270-
(cast && cast->getTypeAsWritten()->isVoidType())) {
2271-
PushBrace push(*this);
2272-
Convert(expr->getSubExpr());
2273-
return false;
2257+
if (auto *bin = clang::dyn_cast<clang::BinaryOperator>(expr->getSubExpr())) {
2258+
if (bin->isCommaOp()) {
2259+
PushBrace push(*this);
2260+
Convert(expr->getSubExpr());
2261+
return false;
2262+
}
22742263
}
22752264

22762265
// Add cast to avoid ambigous integers. Don't add cast if sub expression is a

cpp2rust/converter/converter.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,6 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
240240

241241
virtual bool VisitImplicitCastExpr(clang::ImplicitCastExpr *expr);
242242

243-
void ConvertVoidCastExpr(clang::ExplicitCastExpr *expr);
244-
245243
virtual bool VisitExplicitCastExpr(clang::ExplicitCastExpr *expr);
246244

247245
virtual bool VisitBinaryOperator(clang::BinaryOperator *expr);

cpp2rust/converter/models/converter_refcount.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,8 @@ bool ConverterRefCount::VisitFunctionPointerCast(
11281128

11291129
bool ConverterRefCount::VisitExplicitCastExpr(clang::ExplicitCastExpr *expr) {
11301130
if (expr->getTypeAsWritten()->isVoidType()) {
1131-
ConvertVoidCastExpr(expr);
1131+
PushExprKind push(*this, ExprKind::Void);
1132+
Convert(expr->getSubExpr());
11321133
return false;
11331134
}
11341135
switch (expr->getStmtClass()) {

0 commit comments

Comments
 (0)