Skip to content

Commit bf07aa1

Browse files
authored
Merge pull request #17947 from paldepind/rust-ssa-node-printing
Rust: Mark SSA data flow nodes in output and hide them in paths
2 parents e3662fa + 55796ba commit bf07aa1

File tree

2 files changed

+14
-17
lines changed

2 files changed

+14
-17
lines changed

rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll

+2-5
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,9 @@ module Node {
180180

181181
SsaImpl::DefinitionExt getDefinitionExt() { result = def }
182182

183-
/** Holds if this node should be hidden from path explanations. */
184-
abstract predicate isHidden();
185-
186183
override Location getLocation() { result = node.getLocation() }
187184

188-
override string toString() { result = node.toString() }
185+
override string toString() { result = "[SSA] " + node.toString() }
189186
}
190187

191188
/** A data flow node that represents a value returned by a callable. */
@@ -318,7 +315,7 @@ module RustDataFlow implements InputSig<Location> {
318315

319316
DataFlowType getNodeType(Node node) { any() }
320317

321-
predicate nodeIsHidden(Node node) { none() }
318+
predicate nodeIsHidden(Node node) { node instanceof Node::SsaNode }
322319

323320
class DataFlowExpr = ExprCfgNode;
324321

Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
| main.rs:2:9:2:9 | s | main.rs:3:33:3:33 | s |
2-
| main.rs:6:18:6:21 | cond | main.rs:9:16:9:19 | cond |
3-
| main.rs:7:9:7:9 | a | main.rs:10:9:10:9 | a |
4-
| main.rs:8:9:8:9 | b | main.rs:12:9:12:9 | b |
5-
| main.rs:9:9:9:9 | c | main.rs:14:5:14:5 | c |
1+
| main.rs:2:9:2:9 | [SSA] s | main.rs:3:33:3:33 | s |
2+
| main.rs:6:18:6:21 | [SSA] cond | main.rs:9:16:9:19 | cond |
3+
| main.rs:7:9:7:9 | [SSA] a | main.rs:10:9:10:9 | a |
4+
| main.rs:8:9:8:9 | [SSA] b | main.rs:12:9:12:9 | b |
5+
| main.rs:9:9:9:9 | [SSA] c | main.rs:14:5:14:5 | c |
66
| main.rs:9:21:11:5 | BlockExpr | main.rs:9:13:13:5 | IfExpr |
77
| main.rs:10:9:10:9 | a | main.rs:9:21:11:5 | BlockExpr |
88
| main.rs:11:12:13:5 | BlockExpr | main.rs:9:13:13:5 | IfExpr |
99
| main.rs:12:9:12:9 | b | main.rs:11:12:13:5 | BlockExpr |
1010
| main.rs:14:5:14:5 | c | main.rs:6:37:15:1 | BlockExpr |
11-
| main.rs:18:9:18:9 | a | main.rs:20:15:20:15 | a |
12-
| main.rs:19:9:19:9 | b | main.rs:22:5:22:5 | b |
11+
| main.rs:18:9:18:9 | [SSA] a | main.rs:20:15:20:15 | a |
12+
| main.rs:19:9:19:9 | [SSA] b | main.rs:22:5:22:5 | b |
1313
| main.rs:20:9:20:15 | BreakExpr | main.rs:19:13:21:5 | LoopExpr |
1414
| main.rs:20:15:20:15 | a | main.rs:20:9:20:15 | BreakExpr |
1515
| main.rs:22:5:22:5 | b | main.rs:17:29:23:1 | BlockExpr |
16-
| main.rs:27:5:27:5 | i | main.rs:27:5:27:5 | i |
17-
| main.rs:27:5:27:5 | i | main.rs:28:5:28:5 | i |
16+
| main.rs:27:5:27:5 | [SSA] i | main.rs:28:5:28:5 | i |
17+
| main.rs:27:5:27:5 | i | main.rs:27:5:27:5 | [SSA] i |
1818
| main.rs:28:5:28:5 | i | main.rs:25:24:29:1 | BlockExpr |
19-
| main.rs:31:21:31:21 | a | main.rs:33:20:33:20 | a |
20-
| main.rs:31:29:31:29 | b | main.rs:34:17:34:17 | b |
21-
| main.rs:31:37:31:37 | c | main.rs:32:11:32:11 | c |
19+
| main.rs:31:21:31:21 | [SSA] a | main.rs:33:20:33:20 | a |
20+
| main.rs:31:29:31:29 | [SSA] b | main.rs:34:17:34:17 | b |
21+
| main.rs:31:37:31:37 | [SSA] c | main.rs:32:11:32:11 | c |
2222
| main.rs:32:5:35:5 | MatchExpr | main.rs:31:60:36:1 | BlockExpr |
2323
| main.rs:33:20:33:20 | a | main.rs:32:5:35:5 | MatchExpr |
2424
| main.rs:34:17:34:17 | b | main.rs:32:5:35:5 | MatchExpr |

0 commit comments

Comments
 (0)