@@ -92,8 +92,7 @@ static bool IsArrayFieldPtr(clang::ASTContext &ctx, const clang::Expr *expr) {
9292static bool IsFieldOfVectorElem (const clang::MemberExpr *expr) {
9393 auto *op = clang::dyn_cast<clang::CXXOperatorCallExpr>(
9494 expr->getBase ()->IgnoreParenImpCasts ());
95- return !expr->isArrow () && op && op->getOperator () == clang::OO_Subscript &&
96- !IsUniquePtr (op->getArg (0 )->getType ());
95+ return !expr->isArrow () && op && op->getOperator () == clang::OO_Subscript;
9796}
9897
9998static bool IsPointerType (clang::ASTContext &ctx, clang::QualType type) {
@@ -175,7 +174,6 @@ bool ConverterRefCount::IsUnboxedPlace(const clang::Expr *expr) const {
175174 }
176175 if (auto *op = clang::dyn_cast<clang::CXXOperatorCallExpr>(expr)) {
177176 return op->getOperator () == clang::OO_Subscript &&
178- !IsUniquePtr (op->getArg (0 )->getType ()) &&
179177 IsUnboxedPlace (op->getArg (0 ));
180178 }
181179 auto *ref = clang::dyn_cast<clang::DeclRefExpr>(expr);
@@ -2811,20 +2809,6 @@ void ConverterRefCount::ConvertGenericBinaryOperator(
28112809 computed_expr_type_ = ComputedExprType::FreshValue;
28122810}
28132811
2814- void ConverterRefCount::ConvertUniquePtrDeref (
2815- clang::CXXOperatorCallExpr *expr) {
2816- if (isAddrOf ()) {
2817- StrCat (ConvertRValue (expr->getArg (0 )), " .as_pointer()" );
2818- computed_expr_type_ = ComputedExprType::FreshPointer;
2819- } else {
2820- // The object is modified through its own Value.
2821- StrCat (std::format (" (*{}.as_ref().unwrap().borrow{}())" ,
2822- ConvertRValue (expr->getArg (0 )),
2823- isRValue () ? " " : " _mut" ));
2824- SetValueFreshness (expr->getType ());
2825- }
2826- }
2827-
28282812bool ConverterRefCount::ConvertCXXOperatorCallExpr (
28292813 clang::CXXOperatorCallExpr *expr) {
28302814 switch (expr->getOperator ()) {
@@ -2834,11 +2818,6 @@ bool ConverterRefCount::ConvertCXXOperatorCallExpr(
28342818
28352819 case clang::OverloadedOperatorKind::OO_Arrow:
28362820 case clang::OverloadedOperatorKind::OO_Star:
2837- if (IsUniquePtr (expr->getArg (0 )->getType ())) {
2838- ConvertUniquePtrDeref (expr);
2839- break ;
2840- }
2841-
28422821 if (isLValue ()) {
28432822 auto ptr = ToString (expr->getArg (0 ));
28442823 pending_deref_.set (std::move (ptr), isFresh ());
@@ -2860,24 +2839,6 @@ bool ConverterRefCount::ConvertCXXOperatorCallExpr(
28602839 break ;
28612840
28622841 case clang::OverloadedOperatorKind::OO_Subscript: {
2863- if (IsUniquePtr (expr->getArg (0 )->getType ())) {
2864- StrCat (
2865- std::format (" {}.as_ref().unwrap()" , ConvertRValue (expr->getArg (0 ))));
2866- if (isAddrOf ()) {
2867- StrCat (std::format (" .as_pointer().offset(({}))" ,
2868- ConvertRValue (expr->getArg (1 ))));
2869- } else {
2870- if (isRValue ()) {
2871- StrCat (" .borrow()" );
2872- } else {
2873- StrCat (" .borrow_mut()" );
2874- }
2875- StrCat (std::format (" [({}) as usize]" , ConvertRValue (expr->getArg (1 ))));
2876- }
2877- SetValueFreshness (expr->getType ());
2878- break ;
2879- }
2880-
28812842 bool is_inner_boxed =
28822843 IsBoxedType (ctx_, expr->getType ().getNonReferenceType ()) &&
28832844 IsBoxedType (ctx_, expr->getArg (0 )->getType ().getNonReferenceType ());
0 commit comments