@@ -394,16 +394,12 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> {
394394 }
395395 }
396396
397- private predicate summaryElement (
398- SummarizedCallable c , string input , string output , boolean preservesValue , string provenance
399- ) {
400- c .propagatesFlow ( input , output , preservesValue ) and
401- c .hasProvenance ( provenance )
402- }
403-
404397 private predicate summarySpec ( string spec ) {
405- summaryElement ( _, spec , _, _, _) or
406- summaryElement ( _, _, spec , _, _)
398+ exists ( SummarizedCallable c |
399+ c .propagatesFlow ( spec , _, _)
400+ or
401+ c .propagatesFlow ( _, spec , _)
402+ )
407403 }
408404
409405 import AccessPathSyntax:: AccessPath< summarySpec / 1 >
@@ -652,7 +648,7 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> {
652648
653649 /**
654650 * Holds if `c` has a flow summary from `input` to `arg`, where `arg`
655- * writes to (contents of) arguments at position `pos`, and `c` has a
651+ * writes to (contents of) arguments at (some) position `pos`, and `c` has a
656652 * value-preserving flow summary from the arguments at position `pos`
657653 * to a return value (`return`).
658654 *
@@ -1423,43 +1419,21 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> {
14231419 }
14241420 }
14251421
1426- private class SummarizedCallableExternal extends SummarizedCallableImpl instanceof SummarizedCallable
1422+ // adapter class for converting `SummarizedCallable`s to `SummarizedCallableImpl`s
1423+ private class SummarizedCallableImplAdapter extends SummarizedCallableImpl instanceof SummarizedCallable
14271424 {
1428- SummarizedCallableExternal ( ) { summaryElement ( this , _, _, _, _) }
1429-
1430- private predicate relevantSummaryElementGenerated (
1431- AccessPath inSpec , AccessPath outSpec , boolean preservesValue
1432- ) {
1433- exists ( Provenance provenance |
1434- provenance .isGenerated ( ) and
1435- summaryElement ( this , inSpec , outSpec , preservesValue , provenance )
1436- ) and
1437- not super .applyManualModel ( )
1438- }
1439-
1440- private predicate relevantSummaryElement (
1441- AccessPath inSpec , AccessPath outSpec , boolean preservesValue
1442- ) {
1443- exists ( Provenance provenance |
1444- provenance .isManual ( ) and
1445- summaryElement ( this , inSpec , outSpec , preservesValue , provenance )
1446- )
1447- or
1448- this .relevantSummaryElementGenerated ( inSpec , outSpec , preservesValue )
1449- }
1450-
14511425 override predicate propagatesFlow (
14521426 SummaryComponentStack input , SummaryComponentStack output , boolean preservesValue
14531427 ) {
14541428 exists ( AccessPath inSpec , AccessPath outSpec |
1455- this . relevantSummaryElement ( inSpec , outSpec , preservesValue ) and
1429+ SummarizedCallable . super . propagatesFlow ( inSpec , outSpec , preservesValue ) and
14561430 interpretSpec ( inSpec , input ) and
14571431 interpretSpec ( outSpec , output )
14581432 )
14591433 }
14601434
14611435 override predicate hasProvenance ( Provenance provenance ) {
1462- summaryElement ( this , _ , _ , _ , provenance )
1436+ SummarizedCallable . super . hasProvenance ( provenance )
14631437 }
14641438 }
14651439
@@ -1492,13 +1466,13 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> {
14921466
14931467 /**
14941468 * Holds if an external source specification exists for `n` with output specification
1495- * `output`, kind ` kind`, and provenance `provenance `.
1469+ * `output` and kind `kind `.
14961470 */
14971471 predicate sourceElement ( Element n , string output , string kind ) ;
14981472
14991473 /**
15001474 * Holds if an external sink specification exists for `n` with input specification
1501- * `input`, kind ` kind` and provenance `provenance `.
1475+ * `input` and kind `kind `.
15021476 */
15031477 predicate sinkElement ( Element n , string input , string kind ) ;
15041478
0 commit comments