================ @@ -1711,25 +2008,38 @@ class PointerDereferenceGadget : public FixableGadget { const UnaryOperator *Op = nullptr; public: - PointerDereferenceGadget(const MatchFinder::MatchResult &Result) + PointerDereferenceGadget(const MatchResult &Result) : FixableGadget(Kind::PointerDereference), - BaseDeclRefExpr( - Result.Nodes.getNodeAs<DeclRefExpr>(BaseDeclRefExprTag)), - Op(Result.Nodes.getNodeAs<UnaryOperator>(OperatorTag)) {} + BaseDeclRefExpr(Result.getNodeAs<DeclRefExpr>(BaseDeclRefExprTag)), + Op(Result.getNodeAs<UnaryOperator>(OperatorTag)) {} static bool classof(const Gadget *G) { return G->getKind() == Kind::PointerDereference; } - static Matcher matcher() { - auto Target = - unaryOperator( - hasOperatorName("*"), - has(expr(ignoringParenImpCasts( - declRefExpr(toSupportedVariable()).bind(BaseDeclRefExprTag))))) - .bind(OperatorTag); - - return expr(isInUnspecifiedLvalueContext(Target)); + static bool matches(const Stmt *S, llvm::SmallVector<MatchResult> &Results) { ---------------- ilya-biryukov wrote:
NIT: it's better to accept `llvm::SmallVectorImpl`, it allows to pass small vectors of arbitrary sizes from the outside. (it's a common pattern in LLVM that's useful to be aware of) 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