@@ -104,6 +104,9 @@ API::Node getExtraSuccessorFromNode(API::Node node, AccessPathToken token) {
104104 token .getName ( ) = "Member" and
105105 result = node .getMember ( token .getAnArgument ( ) )
106106 or
107+ token .getName ( ) = "AnyMember" and
108+ result = node .getAMember ( )
109+ or
107110 token .getName ( ) = "Instance" and
108111 result = node .getInstance ( )
109112 or
@@ -163,6 +166,16 @@ predicate invocationMatchesExtraCallSiteFilter(API::InvokeNode invoke, AccessPat
163166 token .getName ( ) = "Call" and
164167 invoke instanceof API:: CallNode and
165168 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+ )
166179}
167180
168181/**
@@ -225,8 +238,9 @@ bindingset[name]
225238predicate isExtraValidTokenNameInIdentifyingAccessPath ( string name ) {
226239 name =
227240 [
228- "Member" , "Instance" , "Awaited" , "ArrayElement" , "Element" , "MapValue" , "NewCall" , "Call" ,
229- "DecoratedClass" , "DecoratedMember" , "DecoratedParameter"
241+ "Member" , "AnyMember" , "Instance" , "Awaited" , "ArrayElement" , "Element" , "MapValue" ,
242+ "NewCall" , "Call" , "DecoratedClass" , "DecoratedMember" , "DecoratedParameter" ,
243+ "WithStringArgument"
230244 ]
231245}
232246
@@ -237,7 +251,7 @@ predicate isExtraValidTokenNameInIdentifyingAccessPath(string name) {
237251predicate isExtraValidNoArgumentTokenInIdentifyingAccessPath ( string name ) {
238252 name =
239253 [
240- "Instance" , "Awaited" , "ArrayElement" , "Element" , "MapValue" , "NewCall" , "Call" ,
254+ "AnyMember" , " Instance", "Awaited" , "ArrayElement" , "Element" , "MapValue" , "NewCall" , "Call" ,
241255 "DecoratedClass" , "DecoratedMember" , "DecoratedParameter"
242256 ]
243257}
@@ -250,4 +264,8 @@ bindingset[name, argument]
250264predicate isExtraValidTokenArgumentInIdentifyingAccessPath ( string name , string argument ) {
251265 name = [ "Member" ] and
252266 exists ( argument )
267+ or
268+ name = "WithStringArgument" and
269+ exists ( argument .indexOf ( "=" ) ) and
270+ exists ( AccessPath:: parseIntWithArity ( argument .splitAt ( "=" , 0 ) , 10 ) )
253271}
0 commit comments