@@ -561,9 +561,10 @@ module API {
561561 rhs = f .getExceptionalReturn ( )
562562 )
563563 or
564- exists ( int i |
565- lbl = Label:: parameter ( i ) and
566- argumentPassing ( base , i , rhs )
564+ exists ( int i | argumentPassing ( base , i , rhs ) |
565+ lbl = Label:: parameter ( i )
566+ or
567+ i = - 1 and lbl = Label:: receiver ( )
567568 )
568569 or
569570 exists ( DataFlow:: SourceNode src , DataFlow:: PropWrite pw |
@@ -1096,8 +1097,8 @@ module API {
10961097 */
10971098 LabelParameter parameter ( int i ) { result .getIndex ( ) = i }
10981099
1099- /** Gets the `parameter` edge label for the receiver. */
1100- LabelParameter receiver ( ) { result = parameter ( - 1 ) }
1100+ /** Gets the edge label for the receiver. */
1101+ LabelReceiver receiver ( ) { any ( ) }
11011102
11021103 /** Gets the `return` edge label. */
11031104 LabelReturn return ( ) { any ( ) }
@@ -1132,12 +1133,13 @@ module API {
11321133 MkLabelUnknownMember ( ) or
11331134 MkLabelParameter ( int i ) {
11341135 i =
1135- [ - 1 .. max ( int args |
1136+ [ 0 .. max ( int args |
11361137 args = any ( InvokeExpr invk ) .getNumArgument ( ) or
11371138 args = any ( Function f ) .getNumParameter ( )
11381139 ) ] or
11391140 i = [ 0 .. 10 ]
11401141 } or
1142+ MkLabelReceiver ( ) or
11411143 MkLabelReturn ( ) or
11421144 MkLabelPromised ( ) or
11431145 MkLabelPromisedError ( ) or
@@ -1225,6 +1227,11 @@ module API {
12251227 /** Gets the index of the parameter for this label. */
12261228 int getIndex ( ) { result = i }
12271229 }
1230+
1231+ /** A label for the receiver of call, that is, the value passed as `this`. */
1232+ class LabelReceiver extends ApiLabel , MkLabelReceiver {
1233+ override string toString ( ) { result = "receiver" }
1234+ }
12281235 }
12291236 }
12301237}
0 commit comments