@@ -40,6 +40,15 @@ class PreCallGraphStep extends Unit {
4040 * Holds if there is a step from the `prop` property of `pred` to the same property in `succ`.
4141 */
4242 predicate loadStoreStep ( DataFlow:: Node pred , DataFlow:: SourceNode succ , string prop ) { none ( ) }
43+
44+ /**
45+ * Holds if there is a step from the `loadProp` property of `pred` to the `storeProp` property in `succ`.
46+ */
47+ predicate loadStoreStep (
48+ DataFlow:: Node pred , DataFlow:: SourceNode succ , string loadProp , string storeProp
49+ ) {
50+ none ( )
51+ }
4352}
4453
4554module PreCallGraphStep {
@@ -75,6 +84,15 @@ module PreCallGraphStep {
7584 predicate loadStoreStep ( DataFlow:: Node pred , DataFlow:: SourceNode succ , string prop ) {
7685 any ( PreCallGraphStep s ) .loadStoreStep ( pred , succ , prop )
7786 }
87+
88+ /**
89+ * Holds if there is a step from the `loadProp` property of `pred` to the `storeProp` property in `succ`.
90+ */
91+ predicate loadStoreStep (
92+ DataFlow:: Node pred , DataFlow:: SourceNode succ , string loadProp , string storeProp
93+ ) {
94+ any ( PreCallGraphStep s ) .loadStoreStep ( pred , succ , loadProp , storeProp )
95+ }
7896}
7997
8098private class SharedFlowStepFromPreCallGraph extends DataFlow:: SharedFlowStep {
@@ -93,6 +111,12 @@ private class SharedFlowStepFromPreCallGraph extends DataFlow::SharedFlowStep {
93111 override predicate loadStoreStep ( DataFlow:: Node pred , DataFlow:: Node succ , string prop ) {
94112 PreCallGraphStep:: loadStoreStep ( pred , succ , prop )
95113 }
114+
115+ override predicate loadStoreStep (
116+ DataFlow:: Node pred , DataFlow:: Node succ , string loadProp , string storeProp
117+ ) {
118+ PreCallGraphStep:: loadStoreStep ( pred , succ , loadProp , storeProp )
119+ }
96120}
97121
98122private class SharedTypeTrackingStepFromPreCallGraph extends DataFlow:: SharedTypeTrackingStep {
@@ -111,4 +135,10 @@ private class SharedTypeTrackingStepFromPreCallGraph extends DataFlow::SharedTyp
111135 override predicate loadStoreStep ( DataFlow:: Node pred , DataFlow:: SourceNode succ , string prop ) {
112136 PreCallGraphStep:: loadStoreStep ( pred , succ , prop )
113137 }
138+
139+ override predicate loadStoreStep (
140+ DataFlow:: Node pred , DataFlow:: SourceNode succ , string loadProp , string storeProp
141+ ) {
142+ PreCallGraphStep:: loadStoreStep ( pred , succ , loadProp , storeProp )
143+ }
114144}
0 commit comments