diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 5f2ddd9849bb..4b086bb8ec01 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -223,7 +223,7 @@ module RustDataFlow implements InputSig { DataFlowCallable nodeGetEnclosingCallable(Node node) { none() } - DataFlowType getNodeType(Node node) { none() } + DataFlowType getNodeType(Node node) { any() } predicate nodeIsHidden(Node node) { none() } @@ -253,6 +253,8 @@ module RustDataFlow implements InputSig { OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { none() } + // NOTE: For now we use the type `Unit` and do not benefit from type + // information in the data flow analysis. final class DataFlowType = Unit; predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { any() } diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/BecomeExpr/CONSISTENCY/DataFlowConsistency.expected index 4dcf3076e517..6516b039d349 100644 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/CONSISTENCY/DataFlowConsistency.expected @@ -3,6 +3,3 @@ uniqueEnclosingCallable | gen_become_expr.rs:4:19:4:24 | Param | Node should have one enclosing callable but has 0. | uniqueCallEnclosingCallable | gen_become_expr.rs:8:17:8:36 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| gen_become_expr.rs:4:11:4:16 | Param | Node should have one type but has 0. | -| gen_become_expr.rs:4:19:4:24 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/CONSISTENCY/DataFlowConsistency.expected index 43e5f60d4cbd..88fdd99977d5 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/CONSISTENCY/DataFlowConsistency.expected @@ -5,10 +5,3 @@ uniqueEnclosingCallable | gen_closure_expr.rs:7:20:7:20 | Param | Node should have one enclosing callable but has 0. | | gen_closure_expr.rs:9:6:9:6 | Param | Node should have one enclosing callable but has 0. | | gen_closure_expr.rs:11:14:11:14 | Param | Node should have one enclosing callable but has 0. | -uniqueType -| gen_closure_expr.rs:5:6:5:6 | Param | Node should have one type but has 0. | -| gen_closure_expr.rs:6:11:6:16 | Param | Node should have one type but has 0. | -| gen_closure_expr.rs:7:12:7:17 | Param | Node should have one type but has 0. | -| gen_closure_expr.rs:7:20:7:20 | Param | Node should have one type but has 0. | -| gen_closure_expr.rs:9:6:9:6 | Param | Node should have one type but has 0. | -| gen_closure_expr.rs:11:14:11:14 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/Function/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/Function/CONSISTENCY/DataFlowConsistency.expected index c8ff66cfc269..ff19b5c755ff 100644 --- a/rust/ql/test/extractor-tests/generated/Function/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/Function/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,2 @@ uniqueEnclosingCallable | gen_function.rs:4:8:4:13 | Param | Node should have one enclosing callable but has 0. | -uniqueType -| gen_function.rs:4:8:4:13 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/LetExpr/CONSISTENCY/DataFlowConsistency.expected index b34704056ca2..d8463348699d 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/LetExpr/CONSISTENCY/DataFlowConsistency.expected @@ -2,5 +2,3 @@ uniqueEnclosingCallable | gen_let_expr.rs:3:18:3:43 | Param | Node should have one enclosing callable but has 0. | uniqueCallEnclosingCallable | gen_let_expr.rs:6:18:6:24 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| gen_let_expr.rs:3:18:3:43 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected index 9a565e34f8f3..1ff9ef2f42b1 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected @@ -1,9 +1,6 @@ uniqueEnclosingCallable | common_definitions.rs:3:15:3:25 | Param | Node should have one enclosing callable but has 0. | | file://:0:0:0:0 | Param | Node should have one enclosing callable but has 0. | -uniqueType -| common_definitions.rs:3:15:3:25 | Param | Node should have one type but has 0. | -| file://:0:0:0:0 | Param | Node should have one type but has 0. | uniqueNodeLocation | file://:0:0:0:0 | BlockExpr | Node should have one location but has 0. | | file://:0:0:0:0 | MethodCallExpr | Node should have one location but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/MatchArm/CONSISTENCY/DataFlowConsistency.expected index c3785fcc7a4f..f3a370b253d5 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArm/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,2 @@ uniqueEnclosingCallable | gen_match_arm.rs:3:19:3:24 | Param | Node should have one enclosing callable but has 0. | -uniqueType -| gen_match_arm.rs:3:19:3:24 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/CONSISTENCY/DataFlowConsistency.expected index 5bcb07018446..f7d9849fdc7b 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,2 @@ uniqueEnclosingCallable | gen_match_expr.rs:3:20:3:25 | Param | Node should have one enclosing callable but has 0. | -uniqueType -| gen_match_expr.rs:3:20:3:25 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/Trait/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/Trait/CONSISTENCY/DataFlowConsistency.expected index 167b3481ee5e..86433bae5031 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,2 @@ uniqueEnclosingCallable | gen_trait.rs:7:32:7:60 | Param | Node should have one enclosing callable but has 0. | -uniqueType -| gen_trait.rs:7:32:7:60 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/library-tests/controlflow/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/library-tests/controlflow/CONSISTENCY/DataFlowConsistency.expected index 31b84f914623..cd9ee6e7f966 100644 --- a/rust/ql/test/library-tests/controlflow/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/library-tests/controlflow/CONSISTENCY/DataFlowConsistency.expected @@ -63,52 +63,3 @@ uniqueCallEnclosingCallable | test.rs:381:12:381:30 | CallExpr | Call should have one enclosing callable but has 0. | | test.rs:384:9:384:23 | CallExpr | Call should have one enclosing callable but has 0. | | test.rs:404:5:404:18 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| test.rs:18:32:18:37 | Param | Node should have one type but has 0. | -| test.rs:36:31:36:37 | Param | Node should have one type but has 0. | -| test.rs:50:34:50:40 | Param | Node should have one type but has 0. | -| test.rs:64:34:64:40 | Param | Node should have one type but has 0. | -| test.rs:78:19:78:24 | Param | Node should have one type but has 0. | -| test.rs:98:17:98:22 | Param | Node should have one type but has 0. | -| test.rs:114:25:114:30 | Param | Node should have one type but has 0. | -| test.rs:115:20:115:20 | Param | Node should have one type but has 0. | -| test.rs:121:21:121:26 | Param | Node should have one type but has 0. | -| test.rs:129:25:129:38 | Param | Node should have one type but has 0. | -| test.rs:137:20:137:33 | Param | Node should have one type but has 0. | -| test.rs:144:23:144:28 | Param | Node should have one type but has 0. | -| test.rs:152:29:152:34 | Param | Node should have one type but has 0. | -| test.rs:163:29:163:34 | Param | Node should have one type but has 0. | -| test.rs:174:27:174:32 | Param | Node should have one type but has 0. | -| test.rs:183:22:183:27 | Param | Node should have one type but has 0. | -| test.rs:196:22:196:27 | Param | Node should have one type but has 0. | -| test.rs:209:28:209:33 | Param | Node should have one type but has 0. | -| test.rs:222:26:222:32 | Param | Node should have one type but has 0. | -| test.rs:222:35:222:41 | Param | Node should have one type but has 0. | -| test.rs:222:44:222:50 | Param | Node should have one type but has 0. | -| test.rs:227:25:227:31 | Param | Node should have one type but has 0. | -| test.rs:227:34:227:40 | Param | Node should have one type but has 0. | -| test.rs:227:43:227:49 | Param | Node should have one type but has 0. | -| test.rs:232:27:232:33 | Param | Node should have one type but has 0. | -| test.rs:232:36:232:41 | Param | Node should have one type but has 0. | -| test.rs:232:44:232:50 | Param | Node should have one type but has 0. | -| test.rs:237:26:237:32 | Param | Node should have one type but has 0. | -| test.rs:242:29:242:35 | Param | Node should have one type but has 0. | -| test.rs:242:38:242:43 | Param | Node should have one type but has 0. | -| test.rs:242:46:242:52 | Param | Node should have one type but has 0. | -| test.rs:250:28:250:34 | Param | Node should have one type but has 0. | -| test.rs:250:37:250:42 | Param | Node should have one type but has 0. | -| test.rs:250:45:250:51 | Param | Node should have one type but has 0. | -| test.rs:258:29:258:35 | Param | Node should have one type but has 0. | -| test.rs:269:38:269:44 | Param | Node should have one type but has 0. | -| test.rs:273:38:273:52 | Param | Node should have one type but has 0. | -| test.rs:283:19:283:42 | Param | Node should have one type but has 0. | -| test.rs:291:44:291:67 | Param | Node should have one type but has 0. | -| test.rs:302:23:302:32 | Param | Node should have one type but has 0. | -| test.rs:302:35:302:48 | Param | Node should have one type but has 0. | -| test.rs:309:35:309:58 | Param | Node should have one type but has 0. | -| test.rs:319:23:319:36 | Param | Node should have one type but has 0. | -| test.rs:324:29:324:42 | Param | Node should have one type but has 0. | -| test.rs:335:28:335:35 | Param | Node should have one type but has 0. | -| test.rs:342:29:342:40 | Param | Node should have one type but has 0. | -| test.rs:401:15:401:25 | Param | Node should have one type but has 0. | -| test.rs:408:16:408:19 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/library-tests/dataflow/barrier/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/library-tests/dataflow/barrier/CONSISTENCY/DataFlowConsistency.expected index da2bb14dcc45..2586c6b13ad0 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/barrier/CONSISTENCY/DataFlowConsistency.expected @@ -10,6 +10,3 @@ uniqueCallEnclosingCallable | main.rs:24:5:24:11 | CallExpr | Call should have one enclosing callable but has 0. | | main.rs:28:13:28:20 | CallExpr | Call should have one enclosing callable but has 0. | | main.rs:29:5:29:11 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| main.rs:5:9:5:15 | Param | Node should have one type but has 0. | -| main.rs:9:13:9:19 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/DataFlowConsistency.expected index ad0830bb77ce..273d49915dea 100644 --- a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/DataFlowConsistency.expected @@ -7,8 +7,3 @@ uniqueCallEnclosingCallable | main.rs:3:14:3:33 | CallExpr | Call should have one enclosing callable but has 0. | | main.rs:39:5:39:14 | CallExpr | Call should have one enclosing callable but has 0. | | main.rs:40:5:40:23 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| main.rs:6:18:6:27 | Param | Node should have one type but has 0. | -| main.rs:31:21:31:26 | Param | Node should have one type but has 0. | -| main.rs:31:29:31:34 | Param | Node should have one type but has 0. | -| main.rs:31:37:31:50 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/library-tests/variables/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/DataFlowConsistency.expected index 7e5ac7d81bc3..6aca28af476f 100644 --- a/rust/ql/test/library-tests/variables/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/library-tests/variables/CONSISTENCY/DataFlowConsistency.expected @@ -158,18 +158,3 @@ uniqueCallEnclosingCallable | variables.rs:542:5:542:13 | CallExpr | Call should have one enclosing callable but has 0. | | variables.rs:543:5:543:13 | CallExpr | Call should have one enclosing callable but has 0. | | variables.rs:544:5:544:29 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| variables.rs:3:14:3:20 | Param | Node should have one type but has 0. | -| variables.rs:7:14:7:19 | Param | Node should have one type but has 0. | -| variables.rs:11:18:11:24 | Param | Node should have one type but has 0. | -| variables.rs:261:5:261:12 | Param | Node should have one type but has 0. | -| variables.rs:262:5:265:19 | Param | Node should have one type but has 0. | -| variables.rs:272:5:272:50 | Param | Node should have one type but has 0. | -| variables.rs:316:10:316:15 | Param | Node should have one type but has 0. | -| variables.rs:324:10:324:15 | Param | Node should have one type but has 0. | -| variables.rs:356:17:356:28 | Param | Node should have one type but has 0. | -| variables.rs:363:22:363:36 | Param | Node should have one type but has 0. | -| variables.rs:363:39:363:57 | Param | Node should have one type but has 0. | -| variables.rs:435:8:435:15 | Param | Node should have one type but has 0. | -| variables.rs:451:13:451:21 | Param | Node should have one type but has 0. | -| variables.rs:451:24:451:32 | Param | Node should have one type but has 0. | diff --git a/rust/ql/test/query-tests/unusedentities/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/query-tests/unusedentities/CONSISTENCY/DataFlowConsistency.expected index 300f3fc863aa..4393f69ac8de 100644 --- a/rust/ql/test/query-tests/unusedentities/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/query-tests/unusedentities/CONSISTENCY/DataFlowConsistency.expected @@ -212,29 +212,3 @@ uniqueCallEnclosingCallable | unreachable.rs:247:9:247:14 | CallExpr | Call should have one enclosing callable but has 0. | | unreachable.rs:248:9:248:22 | CallExpr | Call should have one enclosing callable but has 0. | | unreachable.rs:252:5:252:18 | CallExpr | Call should have one enclosing callable but has 0. | -uniqueType -| main.rs:140:5:140:10 | Param | Node should have one type but has 0. | -| main.rs:141:5:141:10 | Param | Node should have one type but has 0. | -| main.rs:142:5:142:11 | Param | Node should have one type but has 0. | -| main.rs:149:7:149:12 | Param | Node should have one type but has 0. | -| main.rs:382:19:382:21 | Param | Node should have one type but has 0. | -| main.rs:384:14:384:19 | Param | Node should have one type but has 0. | -| main.rs:411:21:411:28 | Param | Node should have one type but has 0. | -| main.rs:411:31:411:38 | Param | Node should have one type but has 0. | -| main.rs:414:21:414:23 | Param | Node should have one type but has 0. | -| main.rs:414:26:414:28 | Param | Node should have one type but has 0. | -| main.rs:417:21:417:23 | Param | Node should have one type but has 0. | -| main.rs:417:26:417:28 | Param | Node should have one type but has 0. | -| main.rs:420:21:420:23 | Param | Node should have one type but has 0. | -| main.rs:420:26:420:28 | Param | Node should have one type but has 0. | -| main.rs:424:21:424:23 | Param | Node should have one type but has 0. | -| main.rs:424:26:424:28 | Param | Node should have one type but has 0. | -| main.rs:430:29:430:38 | Param | Node should have one type but has 0. | -| main.rs:430:41:430:56 | Param | Node should have one type but has 0. | -| main.rs:440:9:440:18 | Param | Node should have one type but has 0. | -| main.rs:441:9:441:24 | Param | Node should have one type but has 0. | -| more.rs:4:23:4:28 | Param | Node should have one type but has 0. | -| more.rs:8:19:8:24 | Param | Node should have one type but has 0. | -| more.rs:16:23:16:28 | Param | Node should have one type but has 0. | -| more.rs:24:9:24:14 | Param | Node should have one type but has 0. | -| unreachable.rs:10:34:10:34 | Param | Node should have one type but has 0. |