@@ -136,3 +136,108 @@ private class SummarizedCallableJsonLoads extends SummarizedCallable {
136136 preservesValue = true
137137 }
138138}
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