@@ -54,7 +54,10 @@ module MakeImplCommon<InputSig Lang> {
54
54
override string toString ( ) { result = "FeatureEqualSourceSinkCallContext" }
55
55
}
56
56
57
- signature predicate sourceNode ( Node n ) ;
57
+ /**
58
+ * Holds if `source` is a relevant data flow source.
59
+ */
60
+ signature predicate sourceNode ( Node source ) ;
58
61
59
62
/**
60
63
* EXPERIMENTAL: This API is subject to change without notice.
@@ -102,6 +105,7 @@ module MakeImplCommon<InputSig Lang> {
102
105
argumentValueFlowsThrough ( n1 , TReadStepTypesNone ( ) , n2 )
103
106
}
104
107
108
+ // TODO: support setters
105
109
predicate storeStep ( Node n1 , Node n2 , Content f ) { storeSet ( n1 , f , n2 , _, _) }
106
110
107
111
predicate loadStep ( Node n1 , LocalSourceNode n2 , Content f ) {
@@ -720,7 +724,7 @@ module MakeImplCommon<InputSig Lang> {
720
724
* If a read step was taken, then `read` captures the `Content`, the
721
725
* container type, and the content type.
722
726
*/
723
- pragma [ nomagic ]
727
+ cached
724
728
predicate argumentValueFlowsThrough ( ArgNode arg , ReadStepTypesOption read , Node out ) {
725
729
exists ( DataFlowCall call , ReturnKind kind |
726
730
argumentValueFlowsThrough0 ( call , arg , kind , read ) and
0 commit comments