@@ -136,3 +136,108 @@ private class SummarizedCallableJsonLoads extends SummarizedCallable {
136
136
preservesValue = true
137
137
}
138
138
}
139
+
140
+ // Repeated summaries
141
+ private class SummarizedCallableWithSubpath extends SummarizedCallable {
142
+ SummarizedCallableWithSubpath ( ) { this = "extracted_package.functions.with_subpath" }
143
+
144
+ override DataFlow:: CallCfgNode getACall ( ) {
145
+ result =
146
+ API:: moduleImport ( "extracted_package" )
147
+ .getMember ( "functions" )
148
+ .getMember ( "with_subpath" )
149
+ .getACall ( )
150
+ }
151
+
152
+ override DataFlow:: ArgumentNode getACallback ( ) {
153
+ result =
154
+ API:: moduleImport ( "extracted_package" )
155
+ .getMember ( "functions" )
156
+ .getMember ( "with_subpath" )
157
+ .getAValueReachableFromSource ( )
158
+ }
159
+
160
+ override predicate propagatesFlow ( string input , string output , boolean preservesValue ) {
161
+ input = "Argument[0]" and
162
+ output = "ReturnValue" and
163
+ preservesValue = false
164
+ }
165
+ }
166
+
167
+ private class SummarizedCallableWithSubpathAgain extends SummarizedCallable {
168
+ SummarizedCallableWithSubpathAgain ( ) { this = "extracted_package.functions.with_subpathII" }
169
+
170
+ override DataFlow:: CallCfgNode getACall ( ) {
171
+ result =
172
+ API:: moduleImport ( "extracted_package" )
173
+ .getMember ( "functions" )
174
+ .getMember ( "with_subpath" )
175
+ .getACall ( )
176
+ }
177
+
178
+ override DataFlow:: ArgumentNode getACallback ( ) {
179
+ result =
180
+ API:: moduleImport ( "extracted_package" )
181
+ .getMember ( "functions" )
182
+ .getMember ( "with_subpath" )
183
+ .getAValueReachableFromSource ( )
184
+ }
185
+
186
+ override predicate propagatesFlow ( string input , string output , boolean preservesValue ) {
187
+ input = "Argument[0]" and
188
+ output = "ReturnValue.Attribute[pattern]" and
189
+ preservesValue = true
190
+ }
191
+ }
192
+
193
+ private class SummarizedCallableWithoutSubpath extends SummarizedCallable {
194
+ SummarizedCallableWithoutSubpath ( ) { this = "extracted_package.functions.without_subpath" }
195
+
196
+ override DataFlow:: CallCfgNode getACall ( ) {
197
+ result =
198
+ API:: moduleImport ( "extracted_package" )
199
+ .getMember ( "functions" )
200
+ .getMember ( "without_subpath" )
201
+ .getACall ( )
202
+ }
203
+
204
+ override DataFlow:: ArgumentNode getACallback ( ) {
205
+ result =
206
+ API:: moduleImport ( "extracted_package" )
207
+ .getMember ( "functions" )
208
+ .getMember ( "without_subpath" )
209
+ .getAValueReachableFromSource ( )
210
+ }
211
+
212
+ override predicate propagatesFlow ( string input , string output , boolean preservesValue ) {
213
+ input = "Argument[0]" and
214
+ output = "ReturnValue" and
215
+ preservesValue = false
216
+ }
217
+ }
218
+
219
+ private class SummarizedCallableWithoutSubpathAgain extends SummarizedCallable {
220
+ SummarizedCallableWithoutSubpathAgain ( ) { this = "extracted_package.functions.without_subpathII" }
221
+
222
+ override DataFlow:: CallCfgNode getACall ( ) {
223
+ result =
224
+ API:: moduleImport ( "extracted_package" )
225
+ .getMember ( "functions" )
226
+ .getMember ( "without_subpath" )
227
+ .getACall ( )
228
+ }
229
+
230
+ override DataFlow:: ArgumentNode getACallback ( ) {
231
+ result =
232
+ API:: moduleImport ( "extracted_package" )
233
+ .getMember ( "functions" )
234
+ .getMember ( "without_subpath" )
235
+ .getAValueReachableFromSource ( )
236
+ }
237
+
238
+ override predicate propagatesFlow ( string input , string output , boolean preservesValue ) {
239
+ input = "Argument[0]" and
240
+ output = "ReturnValue.Attribute[pattern]" and
241
+ preservesValue = true
242
+ }
243
+ }
0 commit comments