@@ -166,6 +166,16 @@ predicate invocationMatchesExtraCallSiteFilter(API::InvokeNode invoke, AccessPat
166
166
token .getName ( ) = "Call" and
167
167
invoke instanceof API:: CallNode and
168
168
invoke instanceof DataFlow:: CallNode // Workaround compiler bug
169
+ or
170
+ token .getName ( ) = "WithStringArgument" and
171
+ exists ( string operand , string argIndex , string stringValue |
172
+ operand = token .getAnArgument ( ) and
173
+ argIndex = operand .splitAt ( "=" , 0 ) and
174
+ stringValue = operand .splitAt ( "=" , 1 ) and
175
+ invoke
176
+ .getArgument ( AccessPath:: parseIntWithArity ( argIndex , invoke .getNumArgument ( ) ) )
177
+ .getStringValue ( ) = stringValue
178
+ )
169
179
}
170
180
171
181
/**
@@ -229,7 +239,8 @@ predicate isExtraValidTokenNameInIdentifyingAccessPath(string name) {
229
239
name =
230
240
[
231
241
"Member" , "AnyMember" , "Instance" , "Awaited" , "ArrayElement" , "Element" , "MapValue" ,
232
- "NewCall" , "Call" , "DecoratedClass" , "DecoratedMember" , "DecoratedParameter"
242
+ "NewCall" , "Call" , "DecoratedClass" , "DecoratedMember" , "DecoratedParameter" ,
243
+ "WithStringArgument"
233
244
]
234
245
}
235
246
@@ -253,4 +264,8 @@ bindingset[name, argument]
253
264
predicate isExtraValidTokenArgumentInIdentifyingAccessPath ( string name , string argument ) {
254
265
name = [ "Member" ] and
255
266
exists ( argument )
267
+ or
268
+ name = "WithStringArgument" and
269
+ exists ( argument .indexOf ( "=" ) ) and
270
+ exists ( AccessPath:: parseIntWithArity ( argument .splitAt ( "=" , 0 ) , 10 ) )
256
271
}
0 commit comments