@@ -499,40 +499,22 @@ private predicate interpretSummary(
499499
500500// adapter class for converting Mad summaries to `SummarizedCallable`s
501501private class SummarizedCallableAdapter extends SummarizedCallable {
502- SummarizedCallableAdapter() { interpretSummary(this, _, _, _, _, _) }
502+ string input_;
503+ string output_;
504+ string kind;
505+ Provenance p_;
506+ string model_;
503507
504- private predicate relevantSummaryElementManual(
505- string input, string output, string kind, string model
506- ) {
507- exists(Provenance provenance |
508- interpretSummary(this, input, output, kind, provenance, model) and
509- provenance.isManual()
510- )
511- }
512-
513- private predicate relevantSummaryElementGenerated(
514- string input, string output, string kind, string model
515- ) {
516- exists(Provenance provenance |
517- interpretSummary(this, input, output, kind, provenance, model) and
518- provenance.isGenerated()
519- )
520- }
508+ SummarizedCallableAdapter() { interpretSummary(this, input_, output_, kind, p_, model_) }
521509
522510 override predicate propagatesFlow(
523- string input, string output, boolean preservesValue, string model
511+ string input, string output, boolean preservesValue, Provenance p, boolean isExact, string model
524512 ) {
525- exists(string kind |
526- this.relevantSummaryElementManual(input, output, kind, model)
527- or
528- not this.relevantSummaryElementManual(_, _, _, _) and
529- this.relevantSummaryElementGenerated(input, output, kind, model)
530- |
531- if kind = "value" then preservesValue = true else preservesValue = false
532- )
533- }
534-
535- override predicate hasProvenance(Provenance provenance) {
536- interpretSummary(this, _, _, _, provenance, _)
513+ input = input_ and
514+ output = output_ and
515+ (if kind = "value" then preservesValue = true else preservesValue = false) and
516+ p = p_ and
517+ isExact = true and
518+ model = model_
537519 }
538520}
0 commit comments