@@ -916,7 +916,7 @@ private module ParameterNodes {
916
916
* The value of a block parameter at function entry, viewed as a node in a data
917
917
* flow graph.
918
918
*/
919
- class BlockParameterNode extends ParameterNodeImpl , ArgumentNode , TBlockParameterNode {
919
+ class BlockParameterNode extends ParameterNodeImpl , TBlockParameterNode {
920
920
private MethodBase method ;
921
921
922
922
BlockParameterNode ( ) { this = TBlockParameterNode ( method ) }
@@ -935,16 +935,6 @@ private module ParameterNodes {
935
935
this .getMethod ( ) = result .getExpr ( ) .( YieldCall ) .getEnclosingMethod ( )
936
936
}
937
937
938
- // needed for variable capture flow
939
- override predicate sourceArgumentOf ( CfgNodes:: ExprNodes:: CallCfgNode call , ArgumentPosition pos ) {
940
- call = this .getAYieldCall ( ) and
941
- pos .isLambdaSelf ( )
942
- }
943
-
944
- override predicate argumentOf ( DataFlowCall call , ArgumentPosition pos ) {
945
- this .sourceArgumentOf ( call .asCall ( ) , pos )
946
- }
947
-
948
938
override CfgScope getCfgScope ( ) { result = method }
949
939
950
940
override Location getLocationImpl ( ) {
@@ -1199,7 +1189,7 @@ abstract class ArgumentNode extends Node {
1199
1189
final DataFlowCall getCall ( ) { this .argumentOf ( result , _) }
1200
1190
}
1201
1191
1202
- private module ArgumentNodes {
1192
+ module ArgumentNodes {
1203
1193
/** A data-flow node that represents an explicit call argument. */
1204
1194
class ExplicitArgumentNode extends ArgumentNode {
1205
1195
Argument arg ;
@@ -1215,6 +1205,20 @@ private module ArgumentNodes {
1215
1205
}
1216
1206
}
1217
1207
1208
+ class BlockParameterArgumentNode extends BlockParameterNode , ArgumentNode {
1209
+ BlockParameterArgumentNode ( ) { exists ( this .getAYieldCall ( ) ) }
1210
+
1211
+ // needed for variable capture flow
1212
+ override predicate sourceArgumentOf ( CfgNodes:: ExprNodes:: CallCfgNode call , ArgumentPosition pos ) {
1213
+ call = this .getAYieldCall ( ) and
1214
+ pos .isLambdaSelf ( )
1215
+ }
1216
+
1217
+ override predicate argumentOf ( DataFlowCall call , ArgumentPosition pos ) {
1218
+ this .sourceArgumentOf ( call .asCall ( ) , pos )
1219
+ }
1220
+ }
1221
+
1218
1222
private class SummaryArgumentNode extends FlowSummaryNode , ArgumentNode {
1219
1223
private DataFlowCall call_ ;
1220
1224
private ArgumentPosition pos_ ;
0 commit comments