@@ -562,6 +562,30 @@ module Configs<LocationSig Location, InputSig<Location> Lang> {
562
562
}
563
563
}
564
564
565
+ /** A type with `toString`. */
566
+ private signature class TypeWithToString {
567
+ string toString ( ) ;
568
+ }
569
+
570
+ import PathGraphSigMod
571
+
572
+ private module PathGraphSigMod {
573
+ signature module PathGraphSig< TypeWithToString PathNode> {
574
+ /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */
575
+ predicate edges ( PathNode a , PathNode b , string key , string val ) ;
576
+
577
+ /** Holds if `n` is a node in the graph of data flow path explanations. */
578
+ predicate nodes ( PathNode n , string key , string val ) ;
579
+
580
+ /**
581
+ * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through
582
+ * a subpath between `par` and `ret` with the connecting edges `arg -> par` and
583
+ * `ret -> out` is summarized as the edge `arg -> out`.
584
+ */
585
+ predicate subpaths ( PathNode arg , PathNode par , PathNode ret , PathNode out ) ;
586
+ }
587
+ }
588
+
565
589
module DataFlowMake< LocationSig Location, InputSig< Location > Lang> {
566
590
private import Lang
567
591
private import internal.DataFlowImpl:: MakeImpl< Location , Lang >
@@ -663,20 +687,7 @@ module DataFlowMake<LocationSig Location, InputSig<Location> Lang> {
663
687
Location getLocation ( ) ;
664
688
}
665
689
666
- signature module PathGraphSig< PathNodeSig PathNode> {
667
- /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */
668
- predicate edges ( PathNode a , PathNode b , string key , string val ) ;
669
-
670
- /** Holds if `n` is a node in the graph of data flow path explanations. */
671
- predicate nodes ( PathNode n , string key , string val ) ;
672
-
673
- /**
674
- * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through
675
- * a subpath between `par` and `ret` with the connecting edges `arg -> par` and
676
- * `ret -> out` is summarized as the edge `arg -> out`.
677
- */
678
- predicate subpaths ( PathNode arg , PathNode par , PathNode ret , PathNode out ) ;
679
- }
690
+ import PathGraphSigMod
680
691
681
692
/**
682
693
* Constructs a `PathGraph` from two `PathGraph`s by disjoint union.
0 commit comments