@@ -841,7 +841,6 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
841841 std::string ufcs_receiver_;
842842 bool in_const_initializer_ = false ;
843843 std::optional<bool > autoref_mut_;
844- bool suppress_iterator_clone_ = false ;
845844
846845 struct PushExplicitAutoref {
847846 Converter &c;
@@ -853,41 +852,6 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
853852 ~PushExplicitAutoref () { c.autoref_mut_ = prev; }
854853 };
855854
856- struct PushSuppressIteratorClone {
857- Converter &c;
858- bool prev;
859- PushSuppressIteratorClone (Converter &c, clang::CXXConstructExpr *expr)
860- : c(c), prev(c.suppress_iterator_clone_) {
861- auto *ctor = expr->getConstructor ();
862- if (!ctor->isCopyOrMoveConstructor () &&
863- ctor->isConvertingConstructor (/* AllowExplicit=*/ false ) &&
864- ctor->getNumParams () == 1 && IsIteratorType (expr->getType ())) {
865- c.suppress_iterator_clone_ = true ;
866- }
867- }
868- ~PushSuppressIteratorClone () { c.suppress_iterator_clone_ = prev; }
869- PushSuppressIteratorClone (const PushSuppressIteratorClone &) = delete ;
870- PushSuppressIteratorClone &
871- operator =(const PushSuppressIteratorClone &) = delete ;
872-
873- static bool take (Converter &c) {
874- return std::exchange (c.suppress_iterator_clone_ , false );
875- }
876-
877- private:
878- static bool IsIteratorType (clang::QualType qt) {
879- if (auto *record = qt->getAsCXXRecordDecl ()) {
880- for (auto *d : record->decls ()) {
881- if (auto *tnd = llvm::dyn_cast<clang::TypedefNameDecl>(d)) {
882- if (tnd->getName () == " iterator_category" )
883- return true ;
884- }
885- }
886- }
887- return false ;
888- }
889- };
890-
891855 struct PushConstInitializer {
892856 Converter &c;
893857 bool prev;
0 commit comments