@@ -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-
18781868bool 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
22642255bool 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
0 commit comments