@@ -503,44 +503,23 @@ predicate barrierNode(DataFlow::Node node, string kind) { barrierNode(node, kind
503503
504504// adapter class for converting Mad summaries to `SummarizedCallable`s
505505private class SummarizedCallableAdapter extends Public:: SummarizedCallable {
506- SummarizedCallableAdapter ( ) { summaryElement ( this , _, _, _, _, _) }
506+ string input_ ;
507+ string output_ ;
508+ string kind ;
509+ Public:: Provenance p_ ;
510+ string model_ ;
507511
508- private predicate relevantSummaryElementManual (
509- string input , string output , string kind , string model
510- ) {
511- exists ( Public:: Provenance provenance |
512- summaryElement ( this , input , output , kind , provenance , model ) and
513- provenance .isManual ( )
514- )
515- }
516-
517- private predicate relevantSummaryElementGenerated (
518- string input , string output , string kind , string model
519- ) {
520- exists ( Public:: Provenance provenance |
521- summaryElement ( this , input , output , kind , provenance , model ) and
522- provenance .isGenerated ( )
523- ) and
524- not exists ( Public:: Provenance provenance |
525- neutralElement ( this , "summary" , provenance ) and
526- provenance .isManual ( )
527- )
528- }
512+ SummarizedCallableAdapter ( ) { summaryElement ( this , input_ , output_ , kind , p_ , model_ ) }
529513
530514 override predicate propagatesFlow (
531- string input , string output , boolean preservesValue , string model
515+ string input , string output , boolean preservesValue , Public:: Provenance p , boolean isExact ,
516+ string model
532517 ) {
533- exists ( string kind |
534- this .relevantSummaryElementManual ( input , output , kind , model )
535- or
536- not this .relevantSummaryElementManual ( _, _, _, _) and
537- this .relevantSummaryElementGenerated ( input , output , kind , model )
538- |
539- if kind = "value" then preservesValue = true else preservesValue = false
540- )
541- }
542-
543- override predicate hasProvenance ( Public:: Provenance provenance ) {
544- summaryElement ( this , _, _, _, provenance , _)
518+ input = input_ and
519+ output = output_ and
520+ ( if kind = "value" then preservesValue = true else preservesValue = false ) and
521+ p = p_ and
522+ isExact = true and
523+ model = model_
545524 }
546525}
0 commit comments