From aeb7b469dd4b43c60657c3c0064a1adcff3b8823 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 22 Nov 2024 14:54:20 +0100 Subject: [PATCH] Rust: Do not print `unit` type in data flow --- .../rust/dataflow/internal/DataFlowImpl.qll | 4 +- .../dataflow/barrier/inline-flow.expected | 36 +++--- .../dataflow/global/inline-flow.expected | 122 +++++++++--------- .../dataflow/local/inline-flow.expected | 30 ++--- 4 files changed, 97 insertions(+), 95 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 3710004b8de6..4e892e8d19c7 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -461,7 +461,9 @@ module RustDataFlow implements InputSig { // 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() } diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected index dd98dd9cee47..2e9b53dbaf19 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected @@ -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 | diff --git a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected index 8c1d90ee45a6..0c2412d6ff6a 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -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 | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index 3cb35a1079fe..98289b67da64 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -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 |