@@ -62,28 +62,29 @@ void SuspiciousStringviewDataUsageCheck::registerMatchers(MatchFinder *Finder) {
62
62
on (ignoringParenImpCasts (
63
63
matchers::isStatementIdenticalToBoundNode (" self" ))));
64
64
65
+ auto DescendantSizeCall = expr (hasDescendant (expr (SizeCall,
66
+ hasAncestor (expr (AncestorCall).bind (" ancestor-size" )),
67
+ hasAncestor (expr (equalsBoundNode (" parent" ), equalsBoundNode (" ancestor-size" ))))));
68
+
65
69
Finder->addMatcher (
66
70
cxxMemberCallExpr (
67
71
on (ignoringParenImpCasts (expr ().bind (" self" ))), callee (DataMethod),
68
72
expr ().bind (" data-call" ),
69
73
hasParent (expr (anyOf (
70
74
invocation (
71
- expr ().bind (" call " ), unless (cxxOperatorCallExpr ()),
75
+ expr ().bind (" parent " ), unless (cxxOperatorCallExpr ()),
72
76
hasAnyArgument (
73
77
ignoringParenImpCasts (equalsBoundNode (" data-call" ))),
74
78
unless (hasAnyArgument (ignoringParenImpCasts (SizeCall))),
75
- unless (hasAnyArgument (hasDescendant (expr (
76
- SizeCall,
77
- hasAncestor (expr (AncestorCall).bind (" ancestor-size" )),
78
- hasAncestor (expr (equalsBoundNode (" call" ),
79
- equalsBoundNode (" ancestor-size" ))))))),
79
+ unless (hasAnyArgument (DescendantSizeCall)),
80
80
hasDeclaration (namedDecl (
81
81
unless (matchers::matchesAnyListedName (AllowedCallees))))),
82
- initListExpr (expr ().bind (" init " ),
82
+ initListExpr (expr ().bind (" parent " ),
83
83
hasType (qualType (hasCanonicalType (hasDeclaration (
84
84
recordDecl (unless (matchers::matchesAnyListedName (
85
85
AllowedCallees))))))),
86
- unless (has (ignoringParenImpCasts (SizeCall)))))))),
86
+ unless (DescendantSizeCall))
87
+ )))),
87
88
this );
88
89
}
89
90
0 commit comments