Mercurial > hg > CbC > CbC_llvm
diff clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp @ 173:0572611fdcc8 llvm10 llvm12
reorgnization done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:55:54 +0900 |
parents | 1d019706d866 |
children | 2e18cbf3894f |
line wrap: on
line diff
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp Mon May 25 11:50:15 2020 +0900 +++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp Mon May 25 11:55:54 2020 +0900 @@ -75,14 +75,17 @@ // The initialization of a base class should be a call to a copy // constructor of the base. if (match( - cxxConstructorDecl(forEachConstructorInitializer(cxxCtorInitializer( - isBaseInitializer(), - withInitializer(cxxConstructExpr( - hasType(equalsNode(Base)), - hasDeclaration(cxxConstructorDecl(isCopyConstructor())), - argumentCountIs(1), - hasArgument( - 0, declRefExpr(to(varDecl(equalsNode(Param)))))))))), + traverse(ast_type_traits::TK_AsIs, + cxxConstructorDecl( + forEachConstructorInitializer(cxxCtorInitializer( + isBaseInitializer(), + withInitializer(cxxConstructExpr( + hasType(equalsNode(Base)), + hasDeclaration( + cxxConstructorDecl(isCopyConstructor())), + argumentCountIs(1), + hasArgument(0, declRefExpr(to(varDecl( + equalsNode(Param))))))))))), *Ctor, *Context) .empty()) return false; @@ -92,17 +95,20 @@ for (const auto *Field : FieldsToInit) { auto AccessToFieldInParam = accessToFieldInVar(Field, Param); // The initialization is a CXXConstructExpr for class types. - if (match( - cxxConstructorDecl(forEachConstructorInitializer(cxxCtorInitializer( - isMemberInitializer(), forField(equalsNode(Field)), - withInitializer(anyOf( - AccessToFieldInParam, - initListExpr(has(AccessToFieldInParam)), - cxxConstructExpr( - hasDeclaration(cxxConstructorDecl(isCopyConstructor())), - argumentCountIs(1), - hasArgument(0, AccessToFieldInParam))))))), - *Ctor, *Context) + if (match(traverse( + ast_type_traits::TK_AsIs, + cxxConstructorDecl( + forEachConstructorInitializer(cxxCtorInitializer( + isMemberInitializer(), forField(equalsNode(Field)), + withInitializer(anyOf( + AccessToFieldInParam, + initListExpr(has(AccessToFieldInParam)), + cxxConstructExpr( + hasDeclaration( + cxxConstructorDecl(isCopyConstructor())), + argumentCountIs(1), + hasArgument(0, AccessToFieldInParam)))))))), + *Ctor, *Context) .empty()) return false; } @@ -130,8 +136,10 @@ // statement: // return *this; if (Compound->body_empty() || - match(returnStmt(has(ignoringParenImpCasts(unaryOperator( - hasOperatorName("*"), hasUnaryOperand(cxxThisExpr()))))), + match(traverse( + ast_type_traits::TK_AsIs, + returnStmt(has(ignoringParenImpCasts(unaryOperator( + hasOperatorName("*"), hasUnaryOperand(cxxThisExpr())))))), *Compound->body_back(), *Context) .empty()) return false; @@ -145,21 +153,23 @@ // ((Base*)this)->operator=((Base)Other); // // So we are looking for a member call that fulfills: - if (match( - compoundStmt(has(ignoringParenImpCasts(cxxMemberCallExpr( - // - The object is an implicit cast of 'this' to a pointer to - // a base class. - onImplicitObjectArgument( - implicitCastExpr(hasImplicitDestinationType( - pointsTo(type(equalsNode(Base)))), - hasSourceExpression(cxxThisExpr()))), - // - The called method is the operator=. - callee(cxxMethodDecl(isCopyAssignmentOperator())), - // - The argument is (an implicit cast to a Base of) the - // argument taken by "Operator". - argumentCountIs(1), - hasArgument(0, declRefExpr(to(varDecl(equalsNode(Param))))))))), - *Compound, *Context) + if (match(traverse(ast_type_traits::TK_AsIs, + compoundStmt(has(ignoringParenImpCasts(cxxMemberCallExpr( + // - The object is an implicit cast of 'this' to a + // pointer to + // a base class. + onImplicitObjectArgument(implicitCastExpr( + hasImplicitDestinationType( + pointsTo(type(equalsNode(Base)))), + hasSourceExpression(cxxThisExpr()))), + // - The called method is the operator=. + callee(cxxMethodDecl(isCopyAssignmentOperator())), + // - The argument is (an implicit cast to a Base of) + // the argument taken by "Operator". + argumentCountIs(1), + hasArgument(0, declRefExpr(to(varDecl( + equalsNode(Param)))))))))), + *Compound, *Context) .empty()) return false; } @@ -174,11 +184,13 @@ member(fieldDecl(equalsNode(Field)))); auto RHS = accessToFieldInVar(Field, Param); if (match( - compoundStmt(has(ignoringParenImpCasts(stmt(anyOf( - binaryOperator(hasOperatorName("="), hasLHS(LHS), hasRHS(RHS)), - cxxOperatorCallExpr(hasOverloadedOperatorName("="), - argumentCountIs(2), hasArgument(0, LHS), - hasArgument(1, RHS))))))), + traverse(ast_type_traits::TK_AsIs, + compoundStmt(has(ignoringParenImpCasts(stmt(anyOf( + binaryOperator(hasOperatorName("="), hasLHS(LHS), + hasRHS(RHS)), + cxxOperatorCallExpr( + hasOverloadedOperatorName("="), argumentCountIs(2), + hasArgument(0, LHS), hasArgument(1, RHS)))))))), *Compound, *Context) .empty()) return false; @@ -201,16 +213,13 @@ UseEqualsDefaultCheck::UseEqualsDefaultCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), - IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true) != 0) {} + IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {} void UseEqualsDefaultCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "IgnoreMacros", IgnoreMacros); } void UseEqualsDefaultCheck::registerMatchers(MatchFinder *Finder) { - if (!getLangOpts().CPlusPlus) - return; - // Destructor. Finder->addMatcher(cxxDestructorDecl(isDefinition()).bind(SpecialFunction), this);