Skip to content

Commit

Permalink
Rust: Do not print unit type in data flow
Browse files Browse the repository at this point in the history
  • Loading branch information
hvitved committed Nov 22, 2024
1 parent b52058f commit aeb7b46
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 95 deletions.
4 changes: 3 additions & 1 deletion rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,9 @@ module RustDataFlow implements InputSig<Location> {

// NOTE: For now we use the type `Unit` and do not benefit from type
// information in the data flow analysis.
final class DataFlowType = Unit;
final class DataFlowType extends Unit {
string toString() { result = "" }
}

predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { any() }

Expand Down
36 changes: 18 additions & 18 deletions rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
models
edges
| main.rs:9:13:9:19 | Param : unit | main.rs:9:30:14:1 | BlockExpr : unit | provenance | |
| main.rs:21:13:21:21 | CallExpr : unit | main.rs:22:10:22:10 | s | provenance | |
| main.rs:26:13:26:21 | CallExpr : unit | main.rs:27:22:27:22 | s : unit | provenance | |
| main.rs:27:13:27:23 | CallExpr : unit | main.rs:28:10:28:10 | s | provenance | |
| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | Param : unit | provenance | |
| main.rs:27:22:27:22 | s : unit | main.rs:27:13:27:23 | CallExpr : unit | provenance | |
| main.rs:32:13:32:21 | CallExpr : unit | main.rs:33:10:33:10 | s | provenance | |
| main.rs:9:13:9:19 | Param | main.rs:9:30:14:1 | BlockExpr | provenance | |
| main.rs:21:13:21:21 | CallExpr | main.rs:22:10:22:10 | s | provenance | |
| main.rs:26:13:26:21 | CallExpr | main.rs:27:22:27:22 | s | provenance | |
| main.rs:27:13:27:23 | CallExpr | main.rs:28:10:28:10 | s | provenance | |
| main.rs:27:22:27:22 | s | main.rs:9:13:9:19 | Param | provenance | |
| main.rs:27:22:27:22 | s | main.rs:27:13:27:23 | CallExpr | provenance | |
| main.rs:32:13:32:21 | CallExpr | main.rs:33:10:33:10 | s | provenance | |
nodes
| main.rs:9:13:9:19 | Param : unit | semmle.label | Param : unit |
| main.rs:9:30:14:1 | BlockExpr : unit | semmle.label | BlockExpr : unit |
| main.rs:9:13:9:19 | Param | semmle.label | Param |
| main.rs:9:30:14:1 | BlockExpr | semmle.label | BlockExpr |
| main.rs:17:10:17:18 | CallExpr | semmle.label | CallExpr |
| main.rs:21:13:21:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:21:13:21:21 | CallExpr | semmle.label | CallExpr |
| main.rs:22:10:22:10 | s | semmle.label | s |
| main.rs:26:13:26:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:27:13:27:23 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:27:22:27:22 | s : unit | semmle.label | s : unit |
| main.rs:26:13:26:21 | CallExpr | semmle.label | CallExpr |
| main.rs:27:13:27:23 | CallExpr | semmle.label | CallExpr |
| main.rs:27:22:27:22 | s | semmle.label | s |
| main.rs:28:10:28:10 | s | semmle.label | s |
| main.rs:32:13:32:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:32:13:32:21 | CallExpr | semmle.label | CallExpr |
| main.rs:33:10:33:10 | s | semmle.label | s |
subpaths
| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | Param : unit | main.rs:9:30:14:1 | BlockExpr : unit | main.rs:27:13:27:23 | CallExpr : unit |
| main.rs:27:22:27:22 | s | main.rs:9:13:9:19 | Param | main.rs:9:30:14:1 | BlockExpr | main.rs:27:13:27:23 | CallExpr |
testFailures
#select
| main.rs:17:10:17:18 | CallExpr | main.rs:17:10:17:18 | CallExpr | main.rs:17:10:17:18 | CallExpr | $@ | main.rs:17:10:17:18 | CallExpr | CallExpr |
| main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | CallExpr : unit | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | CallExpr : unit | CallExpr : unit |
| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | CallExpr : unit | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | CallExpr : unit | CallExpr : unit |
| main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | CallExpr : unit | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | CallExpr : unit | CallExpr : unit |
| main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | CallExpr | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | CallExpr | CallExpr |
| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | CallExpr | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | CallExpr | CallExpr |
| main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | CallExpr | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | CallExpr | CallExpr |
122 changes: 61 additions & 61 deletions rust/ql/test/library-tests/dataflow/global/inline-flow.expected
Original file line number Diff line number Diff line change
@@ -1,74 +1,74 @@
models
edges
| main.rs:12:28:14:1 | BlockExpr : unit | main.rs:17:13:17:23 | CallExpr : unit | provenance | |
| main.rs:13:5:13:13 | CallExpr : unit | main.rs:12:28:14:1 | BlockExpr : unit | provenance | |
| main.rs:17:13:17:23 | CallExpr : unit | main.rs:18:10:18:10 | a | provenance | |
| main.rs:21:12:21:17 | Param : unit | main.rs:22:10:22:10 | n | provenance | |
| main.rs:26:13:26:21 | CallExpr : unit | main.rs:27:13:27:13 | a : unit | provenance | |
| main.rs:27:13:27:13 | a : unit | main.rs:21:12:21:17 | Param : unit | provenance | |
| main.rs:30:17:30:22 | Param : unit | main.rs:30:32:32:1 | BlockExpr : unit | provenance | |
| main.rs:35:13:35:21 | CallExpr : unit | main.rs:36:26:36:26 | a : unit | provenance | |
| main.rs:36:13:36:27 | CallExpr : unit | main.rs:37:10:37:10 | b | provenance | |
| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | Param : unit | provenance | |
| main.rs:36:26:36:26 | a : unit | main.rs:36:13:36:27 | CallExpr : unit | provenance | |
| main.rs:41:13:44:6 | CallExpr : unit | main.rs:45:10:45:10 | a | provenance | |
| main.rs:41:26:44:5 | BlockExpr : unit | main.rs:30:17:30:22 | Param : unit | provenance | |
| main.rs:41:26:44:5 | BlockExpr : unit | main.rs:41:13:44:6 | CallExpr : unit | provenance | |
| main.rs:43:9:43:18 | CallExpr : unit | main.rs:41:26:44:5 | BlockExpr : unit | provenance | |
| main.rs:56:23:56:28 | Param : unit | main.rs:57:14:57:14 | n | provenance | |
| main.rs:59:31:65:5 | BlockExpr : unit | main.rs:77:13:77:25 | ... .get_data(...) : unit | provenance | |
| main.rs:63:13:63:21 | CallExpr : unit | main.rs:59:31:65:5 | BlockExpr : unit | provenance | |
| main.rs:66:28:66:33 | Param : unit | main.rs:66:43:72:5 | BlockExpr : unit | provenance | |
| main.rs:77:13:77:25 | ... .get_data(...) : unit | main.rs:78:10:78:10 | a | provenance | |
| main.rs:83:13:83:21 | CallExpr : unit | main.rs:84:16:84:16 | a : unit | provenance | |
| main.rs:84:16:84:16 | a : unit | main.rs:56:23:56:28 | Param : unit | provenance | |
| main.rs:89:13:89:21 | CallExpr : unit | main.rs:90:29:90:29 | a : unit | provenance | |
| main.rs:90:13:90:30 | ... .data_through(...) : unit | main.rs:91:10:91:10 | b | provenance | |
| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | Param : unit | provenance | |
| main.rs:90:29:90:29 | a : unit | main.rs:90:13:90:30 | ... .data_through(...) : unit | provenance | |
| main.rs:12:28:14:1 | BlockExpr | main.rs:17:13:17:23 | CallExpr | provenance | |
| main.rs:13:5:13:13 | CallExpr | main.rs:12:28:14:1 | BlockExpr | provenance | |
| main.rs:17:13:17:23 | CallExpr | main.rs:18:10:18:10 | a | provenance | |
| main.rs:21:12:21:17 | Param | main.rs:22:10:22:10 | n | provenance | |
| main.rs:26:13:26:21 | CallExpr | main.rs:27:13:27:13 | a | provenance | |
| main.rs:27:13:27:13 | a | main.rs:21:12:21:17 | Param | provenance | |
| main.rs:30:17:30:22 | Param | main.rs:30:32:32:1 | BlockExpr | provenance | |
| main.rs:35:13:35:21 | CallExpr | main.rs:36:26:36:26 | a | provenance | |
| main.rs:36:13:36:27 | CallExpr | main.rs:37:10:37:10 | b | provenance | |
| main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | Param | provenance | |
| main.rs:36:26:36:26 | a | main.rs:36:13:36:27 | CallExpr | provenance | |
| main.rs:41:13:44:6 | CallExpr | main.rs:45:10:45:10 | a | provenance | |
| main.rs:41:26:44:5 | BlockExpr | main.rs:30:17:30:22 | Param | provenance | |
| main.rs:41:26:44:5 | BlockExpr | main.rs:41:13:44:6 | CallExpr | provenance | |
| main.rs:43:9:43:18 | CallExpr | main.rs:41:26:44:5 | BlockExpr | provenance | |
| main.rs:56:23:56:28 | Param | main.rs:57:14:57:14 | n | provenance | |
| main.rs:59:31:65:5 | BlockExpr | main.rs:77:13:77:25 | ... .get_data(...) | provenance | |
| main.rs:63:13:63:21 | CallExpr | main.rs:59:31:65:5 | BlockExpr | provenance | |
| main.rs:66:28:66:33 | Param | main.rs:66:43:72:5 | BlockExpr | provenance | |
| main.rs:77:13:77:25 | ... .get_data(...) | main.rs:78:10:78:10 | a | provenance | |
| main.rs:83:13:83:21 | CallExpr | main.rs:84:16:84:16 | a | provenance | |
| main.rs:84:16:84:16 | a | main.rs:56:23:56:28 | Param | provenance | |
| main.rs:89:13:89:21 | CallExpr | main.rs:90:29:90:29 | a | provenance | |
| main.rs:90:13:90:30 | ... .data_through(...) | main.rs:91:10:91:10 | b | provenance | |
| main.rs:90:29:90:29 | a | main.rs:66:28:66:33 | Param | provenance | |
| main.rs:90:29:90:29 | a | main.rs:90:13:90:30 | ... .data_through(...) | provenance | |
nodes
| main.rs:12:28:14:1 | BlockExpr : unit | semmle.label | BlockExpr : unit |
| main.rs:13:5:13:13 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:17:13:17:23 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:12:28:14:1 | BlockExpr | semmle.label | BlockExpr |
| main.rs:13:5:13:13 | CallExpr | semmle.label | CallExpr |
| main.rs:17:13:17:23 | CallExpr | semmle.label | CallExpr |
| main.rs:18:10:18:10 | a | semmle.label | a |
| main.rs:21:12:21:17 | Param : unit | semmle.label | Param : unit |
| main.rs:21:12:21:17 | Param | semmle.label | Param |
| main.rs:22:10:22:10 | n | semmle.label | n |
| main.rs:26:13:26:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:27:13:27:13 | a : unit | semmle.label | a : unit |
| main.rs:30:17:30:22 | Param : unit | semmle.label | Param : unit |
| main.rs:30:32:32:1 | BlockExpr : unit | semmle.label | BlockExpr : unit |
| main.rs:35:13:35:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:36:13:36:27 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:36:26:36:26 | a : unit | semmle.label | a : unit |
| main.rs:26:13:26:21 | CallExpr | semmle.label | CallExpr |
| main.rs:27:13:27:13 | a | semmle.label | a |
| main.rs:30:17:30:22 | Param | semmle.label | Param |
| main.rs:30:32:32:1 | BlockExpr | semmle.label | BlockExpr |
| main.rs:35:13:35:21 | CallExpr | semmle.label | CallExpr |
| main.rs:36:13:36:27 | CallExpr | semmle.label | CallExpr |
| main.rs:36:26:36:26 | a | semmle.label | a |
| main.rs:37:10:37:10 | b | semmle.label | b |
| main.rs:41:13:44:6 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:41:26:44:5 | BlockExpr : unit | semmle.label | BlockExpr : unit |
| main.rs:43:9:43:18 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:41:13:44:6 | CallExpr | semmle.label | CallExpr |
| main.rs:41:26:44:5 | BlockExpr | semmle.label | BlockExpr |
| main.rs:43:9:43:18 | CallExpr | semmle.label | CallExpr |
| main.rs:45:10:45:10 | a | semmle.label | a |
| main.rs:56:23:56:28 | Param : unit | semmle.label | Param : unit |
| main.rs:56:23:56:28 | Param | semmle.label | Param |
| main.rs:57:14:57:14 | n | semmle.label | n |
| main.rs:59:31:65:5 | BlockExpr : unit | semmle.label | BlockExpr : unit |
| main.rs:63:13:63:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:66:28:66:33 | Param : unit | semmle.label | Param : unit |
| main.rs:66:43:72:5 | BlockExpr : unit | semmle.label | BlockExpr : unit |
| main.rs:77:13:77:25 | ... .get_data(...) : unit | semmle.label | ... .get_data(...) : unit |
| main.rs:59:31:65:5 | BlockExpr | semmle.label | BlockExpr |
| main.rs:63:13:63:21 | CallExpr | semmle.label | CallExpr |
| main.rs:66:28:66:33 | Param | semmle.label | Param |
| main.rs:66:43:72:5 | BlockExpr | semmle.label | BlockExpr |
| main.rs:77:13:77:25 | ... .get_data(...) | semmle.label | ... .get_data(...) |
| main.rs:78:10:78:10 | a | semmle.label | a |
| main.rs:83:13:83:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:84:16:84:16 | a : unit | semmle.label | a : unit |
| main.rs:89:13:89:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:90:13:90:30 | ... .data_through(...) : unit | semmle.label | ... .data_through(...) : unit |
| main.rs:90:29:90:29 | a : unit | semmle.label | a : unit |
| main.rs:83:13:83:21 | CallExpr | semmle.label | CallExpr |
| main.rs:84:16:84:16 | a | semmle.label | a |
| main.rs:89:13:89:21 | CallExpr | semmle.label | CallExpr |
| main.rs:90:13:90:30 | ... .data_through(...) | semmle.label | ... .data_through(...) |
| main.rs:90:29:90:29 | a | semmle.label | a |
| main.rs:91:10:91:10 | b | semmle.label | b |
subpaths
| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | Param : unit | main.rs:30:32:32:1 | BlockExpr : unit | main.rs:36:13:36:27 | CallExpr : unit |
| main.rs:41:26:44:5 | BlockExpr : unit | main.rs:30:17:30:22 | Param : unit | main.rs:30:32:32:1 | BlockExpr : unit | main.rs:41:13:44:6 | CallExpr : unit |
| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | Param : unit | main.rs:66:43:72:5 | BlockExpr : unit | main.rs:90:13:90:30 | ... .data_through(...) : unit |
| main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | Param | main.rs:30:32:32:1 | BlockExpr | main.rs:36:13:36:27 | CallExpr |
| main.rs:41:26:44:5 | BlockExpr | main.rs:30:17:30:22 | Param | main.rs:30:32:32:1 | BlockExpr | main.rs:41:13:44:6 | CallExpr |
| main.rs:90:29:90:29 | a | main.rs:66:28:66:33 | Param | main.rs:66:43:72:5 | BlockExpr | main.rs:90:13:90:30 | ... .data_through(...) |
testFailures
#select
| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | CallExpr : unit | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | CallExpr : unit | CallExpr : unit |
| main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | CallExpr : unit | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | CallExpr : unit | CallExpr : unit |
| main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | CallExpr : unit | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | CallExpr : unit | CallExpr : unit |
| main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | CallExpr : unit | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | CallExpr : unit | CallExpr : unit |
| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | CallExpr : unit | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | CallExpr : unit | CallExpr : unit |
| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | CallExpr : unit | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | CallExpr : unit | CallExpr : unit |
| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | CallExpr : unit | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | CallExpr : unit | CallExpr : unit |
| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | CallExpr | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | CallExpr | CallExpr |
| main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | CallExpr | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | CallExpr | CallExpr |
| main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | CallExpr | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | CallExpr | CallExpr |
| main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | CallExpr | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | CallExpr | CallExpr |
| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | CallExpr | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | CallExpr | CallExpr |
| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | CallExpr | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | CallExpr | CallExpr |
| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | CallExpr | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | CallExpr | CallExpr |
30 changes: 15 additions & 15 deletions rust/ql/test/library-tests/dataflow/local/inline-flow.expected
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
models
edges
| main.rs:19:13:19:21 | CallExpr : unit | main.rs:20:10:20:10 | s | provenance | |
| main.rs:24:13:24:21 | CallExpr : unit | main.rs:27:10:27:10 | c | provenance | |
| main.rs:31:13:31:21 | CallExpr : unit | main.rs:36:10:36:10 | b | provenance | |
| main.rs:45:15:45:23 | CallExpr : unit | main.rs:47:10:47:10 | b | provenance | |
| main.rs:53:9:53:17 | CallExpr : unit | main.rs:54:10:54:10 | i | provenance | |
| main.rs:19:13:19:21 | CallExpr | main.rs:20:10:20:10 | s | provenance | |
| main.rs:24:13:24:21 | CallExpr | main.rs:27:10:27:10 | c | provenance | |
| main.rs:31:13:31:21 | CallExpr | main.rs:36:10:36:10 | b | provenance | |
| main.rs:45:15:45:23 | CallExpr | main.rs:47:10:47:10 | b | provenance | |
| main.rs:53:9:53:17 | CallExpr | main.rs:54:10:54:10 | i | provenance | |
nodes
| main.rs:15:10:15:18 | CallExpr | semmle.label | CallExpr |
| main.rs:19:13:19:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:19:13:19:21 | CallExpr | semmle.label | CallExpr |
| main.rs:20:10:20:10 | s | semmle.label | s |
| main.rs:24:13:24:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:24:13:24:21 | CallExpr | semmle.label | CallExpr |
| main.rs:27:10:27:10 | c | semmle.label | c |
| main.rs:31:13:31:21 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:31:13:31:21 | CallExpr | semmle.label | CallExpr |
| main.rs:36:10:36:10 | b | semmle.label | b |
| main.rs:45:15:45:23 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:45:15:45:23 | CallExpr | semmle.label | CallExpr |
| main.rs:47:10:47:10 | b | semmle.label | b |
| main.rs:53:9:53:17 | CallExpr : unit | semmle.label | CallExpr : unit |
| main.rs:53:9:53:17 | CallExpr | semmle.label | CallExpr |
| main.rs:54:10:54:10 | i | semmle.label | i |
subpaths
testFailures
#select
| main.rs:15:10:15:18 | CallExpr | main.rs:15:10:15:18 | CallExpr | main.rs:15:10:15:18 | CallExpr | $@ | main.rs:15:10:15:18 | CallExpr | CallExpr |
| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | CallExpr : unit | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | CallExpr : unit | CallExpr : unit |
| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | CallExpr : unit | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | CallExpr : unit | CallExpr : unit |
| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | CallExpr : unit | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | CallExpr : unit | CallExpr : unit |
| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | CallExpr : unit | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | CallExpr : unit | CallExpr : unit |
| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | CallExpr : unit | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | CallExpr : unit | CallExpr : unit |
| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | CallExpr | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | CallExpr | CallExpr |
| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | CallExpr | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | CallExpr | CallExpr |
| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | CallExpr | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | CallExpr | CallExpr |
| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | CallExpr | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | CallExpr | CallExpr |
| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | CallExpr | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | CallExpr | CallExpr |

0 comments on commit aeb7b46

Please sign in to comment.