From 58c46ec95938aa5731442c27d6510e773db62820 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 660aee690861..7df553b65a06 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 | ...: ... : unit | main.rs:9:30:14:1 | { ... } : unit | provenance | | -| main.rs:21:13:21:21 | source(...) : unit | main.rs:22:10:22:10 | s | provenance | | -| main.rs:26:13:26:21 | source(...) : unit | main.rs:27:22:27:22 | s : unit | provenance | | -| main.rs:27:13:27:23 | sanitize(...) : unit | main.rs:28:10:28:10 | s | provenance | | -| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | ...: ... : unit | provenance | | -| main.rs:27:22:27:22 | s : unit | main.rs:27:13:27:23 | sanitize(...) : unit | provenance | | -| main.rs:32:13:32:21 | source(...) : unit | main.rs:33:10:33:10 | s | provenance | | +| main.rs:9:13:9:19 | ...: ... | main.rs:9:30:14:1 | { ... } | provenance | | +| main.rs:21:13:21:21 | source(...) | main.rs:22:10:22:10 | s | provenance | | +| main.rs:26:13:26:21 | source(...) | main.rs:27:22:27:22 | s | provenance | | +| main.rs:27:13:27:23 | sanitize(...) | main.rs:28:10:28:10 | s | provenance | | +| main.rs:27:22:27:22 | s | main.rs:9:13:9:19 | ...: ... | provenance | | +| main.rs:27:22:27:22 | s | main.rs:27:13:27:23 | sanitize(...) | provenance | | +| main.rs:32:13:32:21 | source(...) | main.rs:33:10:33:10 | s | provenance | | nodes -| main.rs:9:13:9:19 | ...: ... : unit | semmle.label | ...: ... : unit | -| main.rs:9:30:14:1 | { ... } : unit | semmle.label | { ... } : unit | +| main.rs:9:13:9:19 | ...: ... | semmle.label | ...: ... | +| main.rs:9:30:14:1 | { ... } | semmle.label | { ... } | | main.rs:17:10:17:18 | source(...) | semmle.label | source(...) | -| main.rs:21:13:21:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:21:13:21:21 | source(...) | semmle.label | source(...) | | main.rs:22:10:22:10 | s | semmle.label | s | -| main.rs:26:13:26:21 | source(...) : unit | semmle.label | source(...) : unit | -| main.rs:27:13:27:23 | sanitize(...) : unit | semmle.label | sanitize(...) : unit | -| main.rs:27:22:27:22 | s : unit | semmle.label | s : unit | +| main.rs:26:13:26:21 | source(...) | semmle.label | source(...) | +| main.rs:27:13:27:23 | sanitize(...) | semmle.label | sanitize(...) | +| 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 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:32:13:32:21 | source(...) | semmle.label | source(...) | | 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 | ...: ... : unit | main.rs:9:30:14:1 | { ... } : unit | main.rs:27:13:27:23 | sanitize(...) : unit | +| main.rs:27:22:27:22 | s | main.rs:9:13:9:19 | ...: ... | main.rs:9:30:14:1 | { ... } | main.rs:27:13:27:23 | sanitize(...) | testFailures #select | main.rs:17:10:17:18 | source(...) | main.rs:17:10:17:18 | source(...) | main.rs:17:10:17:18 | source(...) | $@ | main.rs:17:10:17:18 | source(...) | source(...) | -| main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | source(...) : unit | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | source(...) : unit | source(...) : unit | -| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | source(...) : unit | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | source(...) : unit | source(...) : unit | -| main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | source(...) : unit | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | source(...) : unit | source(...) : unit | +| main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | source(...) | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | source(...) | source(...) | +| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | source(...) | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | source(...) | source(...) | +| main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | source(...) | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | source(...) | source(...) | 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 147fa059c31f..89fa0442293a 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 | { ... } : unit | main.rs:17:13:17:23 | get_data(...) : unit | provenance | | -| main.rs:13:5:13:13 | source(...) : unit | main.rs:12:28:14:1 | { ... } : unit | provenance | | -| main.rs:17:13:17:23 | get_data(...) : unit | main.rs:18:10:18:10 | a | provenance | | -| main.rs:21:12:21:17 | ...: i64 : unit | main.rs:22:10:22:10 | n | provenance | | -| main.rs:26:13:26:21 | source(...) : unit | main.rs:27:13:27:13 | a : unit | provenance | | -| main.rs:27:13:27:13 | a : unit | main.rs:21:12:21:17 | ...: i64 : unit | provenance | | -| main.rs:30:17:30:22 | ...: i64 : unit | main.rs:30:32:32:1 | { ... } : unit | provenance | | -| main.rs:35:13:35:21 | source(...) : unit | main.rs:36:26:36:26 | a : unit | provenance | | -| main.rs:36:13:36:27 | pass_through(...) : unit | main.rs:37:10:37:10 | b | provenance | | -| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | ...: i64 : unit | provenance | | -| main.rs:36:26:36:26 | a : unit | main.rs:36:13:36:27 | pass_through(...) : unit | provenance | | -| main.rs:41:13:44:6 | pass_through(...) : unit | main.rs:45:10:45:10 | a | provenance | | -| main.rs:41:26:44:5 | { ... } : unit | main.rs:30:17:30:22 | ...: i64 : unit | provenance | | -| main.rs:41:26:44:5 | { ... } : unit | main.rs:41:13:44:6 | pass_through(...) : unit | provenance | | -| main.rs:43:9:43:18 | source(...) : unit | main.rs:41:26:44:5 | { ... } : unit | provenance | | -| main.rs:56:23:56:28 | ...: i64 : unit | main.rs:57:14:57:14 | n | provenance | | -| main.rs:59:31:65:5 | { ... } : unit | main.rs:77:13:77:25 | ... .get_data(...) : unit | provenance | | -| main.rs:63:13:63:21 | source(...) : unit | main.rs:59:31:65:5 | { ... } : unit | provenance | | -| main.rs:66:28:66:33 | ...: i64 : unit | main.rs:66:43:72:5 | { ... } : 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 | source(...) : unit | main.rs:84:16:84:16 | a : unit | provenance | | -| main.rs:84:16:84:16 | a : unit | main.rs:56:23:56:28 | ...: i64 : unit | provenance | | -| main.rs:89:13:89:21 | source(...) : 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 | ...: i64 : 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 | { ... } | main.rs:17:13:17:23 | get_data(...) | provenance | | +| main.rs:13:5:13:13 | source(...) | main.rs:12:28:14:1 | { ... } | provenance | | +| main.rs:17:13:17:23 | get_data(...) | main.rs:18:10:18:10 | a | provenance | | +| main.rs:21:12:21:17 | ...: i64 | main.rs:22:10:22:10 | n | provenance | | +| main.rs:26:13:26:21 | source(...) | main.rs:27:13:27:13 | a | provenance | | +| main.rs:27:13:27:13 | a | main.rs:21:12:21:17 | ...: i64 | provenance | | +| main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | provenance | | +| main.rs:35:13:35:21 | source(...) | main.rs:36:26:36:26 | a | provenance | | +| main.rs:36:13:36:27 | pass_through(...) | main.rs:37:10:37:10 | b | provenance | | +| main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | ...: i64 | provenance | | +| main.rs:36:26:36:26 | a | main.rs:36:13:36:27 | pass_through(...) | provenance | | +| main.rs:41:13:44:6 | pass_through(...) | main.rs:45:10:45:10 | a | provenance | | +| main.rs:41:26:44:5 | { ... } | main.rs:30:17:30:22 | ...: i64 | provenance | | +| main.rs:41:26:44:5 | { ... } | main.rs:41:13:44:6 | pass_through(...) | provenance | | +| main.rs:43:9:43:18 | source(...) | main.rs:41:26:44:5 | { ... } | provenance | | +| main.rs:56:23:56:28 | ...: i64 | main.rs:57:14:57:14 | n | provenance | | +| main.rs:59:31:65:5 | { ... } | main.rs:77:13:77:25 | ... .get_data(...) | provenance | | +| main.rs:63:13:63:21 | source(...) | main.rs:59:31:65:5 | { ... } | provenance | | +| main.rs:66:28:66:33 | ...: i64 | main.rs:66:43:72:5 | { ... } | provenance | | +| main.rs:77:13:77:25 | ... .get_data(...) | main.rs:78:10:78:10 | a | provenance | | +| main.rs:83:13:83:21 | source(...) | main.rs:84:16:84:16 | a | provenance | | +| main.rs:84:16:84:16 | a | main.rs:56:23:56:28 | ...: i64 | provenance | | +| main.rs:89:13:89:21 | source(...) | 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 | ...: i64 | provenance | | +| main.rs:90:29:90:29 | a | main.rs:90:13:90:30 | ... .data_through(...) | provenance | | nodes -| main.rs:12:28:14:1 | { ... } : unit | semmle.label | { ... } : unit | -| main.rs:13:5:13:13 | source(...) : unit | semmle.label | source(...) : unit | -| main.rs:17:13:17:23 | get_data(...) : unit | semmle.label | get_data(...) : unit | +| main.rs:12:28:14:1 | { ... } | semmle.label | { ... } | +| main.rs:13:5:13:13 | source(...) | semmle.label | source(...) | +| main.rs:17:13:17:23 | get_data(...) | semmle.label | get_data(...) | | main.rs:18:10:18:10 | a | semmle.label | a | -| main.rs:21:12:21:17 | ...: i64 : unit | semmle.label | ...: i64 : unit | +| main.rs:21:12:21:17 | ...: i64 | semmle.label | ...: i64 | | main.rs:22:10:22:10 | n | semmle.label | n | -| main.rs:26:13:26:21 | source(...) : unit | semmle.label | source(...) : unit | -| main.rs:27:13:27:13 | a : unit | semmle.label | a : unit | -| main.rs:30:17:30:22 | ...: i64 : unit | semmle.label | ...: i64 : unit | -| main.rs:30:32:32:1 | { ... } : unit | semmle.label | { ... } : unit | -| main.rs:35:13:35:21 | source(...) : unit | semmle.label | source(...) : unit | -| main.rs:36:13:36:27 | pass_through(...) : unit | semmle.label | pass_through(...) : unit | -| main.rs:36:26:36:26 | a : unit | semmle.label | a : unit | +| main.rs:26:13:26:21 | source(...) | semmle.label | source(...) | +| main.rs:27:13:27:13 | a | semmle.label | a | +| main.rs:30:17:30:22 | ...: i64 | semmle.label | ...: i64 | +| main.rs:30:32:32:1 | { ... } | semmle.label | { ... } | +| main.rs:35:13:35:21 | source(...) | semmle.label | source(...) | +| main.rs:36:13:36:27 | pass_through(...) | semmle.label | pass_through(...) | +| 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 | pass_through(...) : unit | semmle.label | pass_through(...) : unit | -| main.rs:41:26:44:5 | { ... } : unit | semmle.label | { ... } : unit | -| main.rs:43:9:43:18 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:41:13:44:6 | pass_through(...) | semmle.label | pass_through(...) | +| main.rs:41:26:44:5 | { ... } | semmle.label | { ... } | +| main.rs:43:9:43:18 | source(...) | semmle.label | source(...) | | main.rs:45:10:45:10 | a | semmle.label | a | -| main.rs:56:23:56:28 | ...: i64 : unit | semmle.label | ...: i64 : unit | +| main.rs:56:23:56:28 | ...: i64 | semmle.label | ...: i64 | | main.rs:57:14:57:14 | n | semmle.label | n | -| main.rs:59:31:65:5 | { ... } : unit | semmle.label | { ... } : unit | -| main.rs:63:13:63:21 | source(...) : unit | semmle.label | source(...) : unit | -| main.rs:66:28:66:33 | ...: i64 : unit | semmle.label | ...: i64 : unit | -| main.rs:66:43:72:5 | { ... } : unit | semmle.label | { ... } : unit | -| main.rs:77:13:77:25 | ... .get_data(...) : unit | semmle.label | ... .get_data(...) : unit | +| main.rs:59:31:65:5 | { ... } | semmle.label | { ... } | +| main.rs:63:13:63:21 | source(...) | semmle.label | source(...) | +| main.rs:66:28:66:33 | ...: i64 | semmle.label | ...: i64 | +| main.rs:66:43:72:5 | { ... } | semmle.label | { ... } | +| 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 | source(...) : unit | semmle.label | source(...) : unit | -| main.rs:84:16:84:16 | a : unit | semmle.label | a : unit | -| main.rs:89:13:89:21 | source(...) : unit | semmle.label | source(...) : 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 | source(...) | semmle.label | source(...) | +| main.rs:84:16:84:16 | a | semmle.label | a | +| main.rs:89:13:89:21 | source(...) | semmle.label | source(...) | +| 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 | ...: i64 : unit | main.rs:30:32:32:1 | { ... } : unit | main.rs:36:13:36:27 | pass_through(...) : unit | -| main.rs:41:26:44:5 | { ... } : unit | main.rs:30:17:30:22 | ...: i64 : unit | main.rs:30:32:32:1 | { ... } : unit | main.rs:41:13:44:6 | pass_through(...) : unit | -| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | ...: i64 : unit | main.rs:66:43:72:5 | { ... } : unit | main.rs:90:13:90:30 | ... .data_through(...) : unit | +| main.rs:36:26:36:26 | a | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:36:13:36:27 | pass_through(...) | +| main.rs:41:26:44:5 | { ... } | main.rs:30:17:30:22 | ...: i64 | main.rs:30:32:32:1 | { ... } | main.rs:41:13:44:6 | pass_through(...) | +| main.rs:90:29:90:29 | a | main.rs:66:28:66:33 | ...: i64 | main.rs:66:43:72:5 | { ... } | main.rs:90:13:90:30 | ... .data_through(...) | testFailures #select -| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) : unit | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) : unit | source(...) : unit | -| main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | source(...) : unit | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | source(...) : unit | source(...) : unit | -| main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | source(...) : unit | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | source(...) : unit | source(...) : unit | -| main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | source(...) : unit | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | source(...) : unit | source(...) : unit | -| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | source(...) : unit | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | source(...) : unit | source(...) : unit | -| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | source(...) : unit | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | source(...) : unit | source(...) : unit | -| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | source(...) : unit | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | source(...) : unit | source(...) : unit | +| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) | +| main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | source(...) | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | source(...) | source(...) | +| main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | source(...) | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | source(...) | source(...) | +| main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | source(...) | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | source(...) | source(...) | +| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | source(...) | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | source(...) | source(...) | +| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | source(...) | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | source(...) | source(...) | +| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | source(...) | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | source(...) | source(...) | 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 0932efcf4846..f8585809e942 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 | source(...) : unit | main.rs:20:10:20:10 | s | provenance | | -| main.rs:24:13:24:21 | source(...) : unit | main.rs:27:10:27:10 | c | provenance | | -| main.rs:31:13:31:21 | source(...) : unit | main.rs:36:10:36:10 | b | provenance | | -| main.rs:45:15:45:23 | source(...) : unit | main.rs:47:10:47:10 | b | provenance | | -| main.rs:53:9:53:17 | source(...) : unit | main.rs:54:10:54:10 | i | provenance | | +| main.rs:19:13:19:21 | source(...) | main.rs:20:10:20:10 | s | provenance | | +| main.rs:24:13:24:21 | source(...) | main.rs:27:10:27:10 | c | provenance | | +| main.rs:31:13:31:21 | source(...) | main.rs:36:10:36:10 | b | provenance | | +| main.rs:45:15:45:23 | source(...) | main.rs:47:10:47:10 | b | provenance | | +| main.rs:53:9:53:17 | source(...) | main.rs:54:10:54:10 | i | provenance | | nodes | main.rs:15:10:15:18 | source(...) | semmle.label | source(...) | -| main.rs:19:13:19:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:19:13:19:21 | source(...) | semmle.label | source(...) | | main.rs:20:10:20:10 | s | semmle.label | s | -| main.rs:24:13:24:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:24:13:24:21 | source(...) | semmle.label | source(...) | | main.rs:27:10:27:10 | c | semmle.label | c | -| main.rs:31:13:31:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:31:13:31:21 | source(...) | semmle.label | source(...) | | main.rs:36:10:36:10 | b | semmle.label | b | -| main.rs:45:15:45:23 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:45:15:45:23 | source(...) | semmle.label | source(...) | | main.rs:47:10:47:10 | b | semmle.label | b | -| main.rs:53:9:53:17 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:53:9:53:17 | source(...) | semmle.label | source(...) | | main.rs:54:10:54:10 | i | semmle.label | i | subpaths testFailures #select | main.rs:15:10:15:18 | source(...) | main.rs:15:10:15:18 | source(...) | main.rs:15:10:15:18 | source(...) | $@ | main.rs:15:10:15:18 | source(...) | source(...) | -| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | source(...) : unit | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | source(...) : unit | source(...) : unit | -| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | source(...) : unit | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | source(...) : unit | source(...) : unit | -| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | source(...) : unit | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | source(...) : unit | source(...) : unit | -| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | source(...) : unit | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | source(...) : unit | source(...) : unit | -| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | source(...) : unit | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | source(...) : unit | source(...) : unit | +| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | source(...) | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | source(...) | source(...) | +| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | source(...) | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | source(...) | source(...) | +| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | source(...) | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | source(...) | source(...) | +| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | source(...) | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | source(...) | source(...) | +| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | source(...) | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | source(...) | source(...) |