================ @@ -1670,30 +1936,41 @@ class ULCArraySubscriptGadget : public FixableGadget { }; // Fixable gadget to handle stand alone pointers of the form `UPC(DRE)` in the -// unspecified pointer context (isInUnspecifiedPointerContext). The gadget emits -// fixit of the form `UPC(DRE.data())`. +// unspecified pointer context (findStmtsInUnspecifiedPointerContext). The +// gadget emits fixit of the form `UPC(DRE.data())`. class UPCStandalonePointerGadget : public FixableGadget { private: static constexpr const char *const DeclRefExprTag = "StandalonePointer"; const DeclRefExpr *Node; public: - UPCStandalonePointerGadget(const MatchFinder::MatchResult &Result) + UPCStandalonePointerGadget(const MatchResult &Result) : FixableGadget(Kind::UPCStandalonePointer), - Node(Result.Nodes.getNodeAs<DeclRefExpr>(DeclRefExprTag)) { + Node(Result.getNodeAs<DeclRefExpr>(DeclRefExprTag)) { assert(Node != nullptr && "Expecting a non-null matching result"); } static bool classof(const Gadget *G) { return G->getKind() == Kind::UPCStandalonePointer; } - static Matcher matcher() { - auto ArrayOrPtr = anyOf(hasPointerType(), hasArrayType()); - auto target = expr(ignoringParenImpCasts( - declRefExpr(allOf(ArrayOrPtr, toSupportedVariable())) - .bind(DeclRefExprTag))); - return stmt(isInUnspecifiedPointerContext(target)); + static bool matches(const Stmt *S, + llvm::SmallVectorImpl<MatchResult> &Results) { + bool Found = false; + findStmtsInUnspecifiedPointerContext(S, [&Found, &Results](const Stmt *S) { ---------------- ziqingluo-90 wrote:
nit: for these functions like `findStmtsInUnspecifiedPointerContext`, can we change the type of the second parameter to `llvm::function_ref<bool(const Stmt *)>`? I just feel like it would be a bit more intuitive than capturing `Found`. https://github.com/llvm/llvm-project/pull/125492 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits