File tree Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -19,3 +19,18 @@ import SimpleMod
19
19
private module SecondImpl implements MkThing< MyImpl > :: SubMod {
20
20
predicate bar ( ) { none ( ) }
21
21
}
22
+
23
+ class Node extends int {
24
+ Node ( ) { this = [ 0 .. 10 ] }
25
+ }
26
+
27
+ predicate sccEdge ( Node a , Node b ) { a = b % 2 }
28
+
29
+ private module Scc = QlBuiltins:: EquivalenceRelation< Node , sccEdge / 2 > ;
30
+
31
+ private class TypeFlowScc = Scc:: EquivalenceClass ;
32
+
33
+ /** Holds if `n` is part of an SCC of size 2 or more represented by `scc`. */
34
+ predicate sccRepr ( Node n , TypeFlowScc scc ) { scc = Scc:: getEquivalenceClass ( n ) }
35
+
36
+ predicate sccJoinStep ( Node n , TypeFlowScc scc ) { none ( ) }
Original file line number Diff line number Diff line change @@ -8,6 +8,8 @@ getTarget
8
8
| Foo.qll:19:38:19:52 | MkThing | Foo.qll:9:16:9:22 | MkThing |
9
9
| Foo.qll:19:38:19:60 | TypeExpr | Foo.qll:10:20:10:25 | SubMod |
10
10
| Foo.qll:19:46:19:51 | TypeExpr | Foo.qll:5:16:5:21 | MyImpl |
11
+ | Foo.qll:31:29:31:31 | Scc | Foo.qll:29:16:29:18 | Scc |
12
+ | Foo.qll:34:52:34:54 | Scc | Foo.qll:29:16:29:18 | Scc |
11
13
getTargetType
12
14
| ClassSig.qll:3:23:3:28 | TypeExpr | file://:0:0:0:0 | string |
13
15
| ClassSig.qll:7:12:7:17 | TypeExpr | ClassSig.qll:1:17:1:22 | FooSig |
@@ -23,3 +25,11 @@ getTargetType
23
25
| Foo.qll:19:38:19:52 | MkThing | Foo.qll:9:16:9:22 | MkThing |
24
26
| Foo.qll:19:38:19:60 | TypeExpr | Foo.qll:10:20:10:25 | SubMod |
25
27
| Foo.qll:19:46:19:51 | TypeExpr | Foo.qll:5:16:5:21 | MyImpl |
28
+ | Foo.qll:23:20:23:22 | TypeExpr | file://:0:0:0:0 | int |
29
+ | Foo.qll:27:19:27:22 | TypeExpr | Foo.qll:23:7:23:10 | Node |
30
+ | Foo.qll:27:27:27:30 | TypeExpr | Foo.qll:23:7:23:10 | Node |
31
+ | Foo.qll:29:54:29:57 | TypeExpr | Foo.qll:23:7:23:10 | Node |
32
+ | Foo.qll:31:29:31:31 | Scc | Foo.qll:29:16:29:18 | Scc |
33
+ | Foo.qll:34:19:34:22 | TypeExpr | Foo.qll:23:7:23:10 | Node |
34
+ | Foo.qll:34:52:34:54 | Scc | Foo.qll:29:16:29:18 | Scc |
35
+ | Foo.qll:36:23:36:26 | TypeExpr | Foo.qll:23:7:23:10 | Node |
You can’t perform that action at this time.
0 commit comments