https://github.com/HerrCai0907 created https://github.com/llvm/llvm-project/pull/119346
combine type matcher and optional type check. >From e463ebdd1c859192aabb3fce91d3a0c465756fed Mon Sep 17 00:00:00 2001 From: Congcong Cai <congcongcai0...@163.com> Date: Tue, 10 Dec 2024 17:00:17 +0800 Subject: [PATCH] [clang-tidy][NFC] simplify matchers in bugprone-optional-value-conversion combine type matcher and optional type check. --- .../bugprone/OptionalValueConversionCheck.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/OptionalValueConversionCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/OptionalValueConversionCheck.cpp index 600eab37552766..f2ff27d85fb004 100644 --- a/clang-tools-extra/clang-tidy/bugprone/OptionalValueConversionCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/OptionalValueConversionCheck.cpp @@ -43,18 +43,20 @@ OptionalValueConversionCheck::getCheckTraversalKind() const { } void OptionalValueConversionCheck::registerMatchers(MatchFinder *Finder) { - auto ConstructTypeMatcher = - qualType(hasCleanType(qualType().bind("optional-type"))); + auto BindOptionalType = qualType( + hasCleanType(qualType(hasDeclaration(namedDecl( + matchers::matchesAnyListedName(OptionalTypes)))) + .bind("optional-type"))); - auto CallTypeMatcher = + auto EqualsBoundOptionalType = qualType(hasCleanType(equalsBoundNode("optional-type"))); auto OptionalDereferenceMatcher = callExpr( anyOf( cxxOperatorCallExpr(hasOverloadedOperatorName("*"), - hasUnaryOperand(hasType(CallTypeMatcher))) + hasUnaryOperand(hasType(EqualsBoundOptionalType))) .bind("op-call"), - cxxMemberCallExpr(thisPointerType(CallTypeMatcher), + cxxMemberCallExpr(thisPointerType(EqualsBoundOptionalType), callee(cxxMethodDecl(anyOf( hasOverloadedOperatorName("*"), matchers::matchesAnyListedName(ValueMethods))))) @@ -66,10 +68,7 @@ void OptionalValueConversionCheck::registerMatchers(MatchFinder *Finder) { hasArgument(0, ignoringImpCasts(OptionalDereferenceMatcher))); Finder->addMatcher( cxxConstructExpr( - argumentCountIs(1U), - hasDeclaration(cxxConstructorDecl( - ofClass(matchers::matchesAnyListedName(OptionalTypes)))), - hasType(ConstructTypeMatcher), + argumentCountIs(1U), hasType(BindOptionalType), hasArgument(0U, ignoringImpCasts(anyOf(OptionalDereferenceMatcher, StdMoveCallMatcher))), unless(anyOf(hasAncestor(typeLoc()), _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits