@@ -562,6 +562,30 @@ module Configs<LocationSig Location, InputSig<Location> Lang> {
562562 }
563563}
564564
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+
565589module DataFlowMake< LocationSig Location, InputSig< Location > Lang> {
566590 private import Lang
567591 private import internal.DataFlowImpl:: MakeImpl< Location , Lang >
@@ -663,20 +687,7 @@ module DataFlowMake<LocationSig Location, InputSig<Location> Lang> {
663687 Location getLocation ( ) ;
664688 }
665689
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
680691
681692 /**
682693 * Constructs a `PathGraph` from two `PathGraph`s by disjoint union.
0 commit comments