Skip to content

Commit f73ba1f

Browse files
committed
Rust: Use useUniversalConditions() { none() }
1 parent 0586952 commit f73ba1f

File tree

3 files changed

+7
-24
lines changed

3 files changed

+7
-24
lines changed

rust/ql/lib/codeql/rust/internal/TypeInference.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3070,6 +3070,8 @@ private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInput
30703070
exists(term) and
30713071
constraint.(TraitType).getTrait() instanceof FutureTrait
30723072
}
3073+
3074+
predicate useUniversalConditions() { none() }
30733075
}
30743076

30753077
pragma[nomagic]
@@ -3245,6 +3247,8 @@ private module ForIterableSatisfiesConstraintInput implements
32453247
t instanceof IntoIteratorTrait
32463248
)
32473249
}
3250+
3251+
predicate useUniversalConditions() { none() }
32483252
}
32493253

32503254
pragma[nomagic]
@@ -3299,6 +3303,8 @@ private module InvokedClosureSatisfiesConstraintInput implements
32993303
exists(term) and
33003304
constraint.(TraitType).getTrait() instanceof FnOnceTrait
33013305
}
3306+
3307+
predicate useUniversalConditions() { none() }
33023308
}
33033309

33043310
/** Gets the type of `ce` when viewed as an implementation of `FnOnce`. */

rust/ql/test/library-tests/type-inference/type-inference.expected

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5381,15 +5381,13 @@ inferType
53815381
| main.rs:2608:16:2715:5 | { ... } | | {EXTERNAL LOCATION} | () |
53825382
| main.rs:2611:9:2611:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
53835383
| main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i32 |
5384-
| main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | & |
53855384
| main.rs:2611:18:2611:26 | [...] | | {EXTERNAL LOCATION} | [;] |
53865385
| main.rs:2611:18:2611:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 |
53875386
| main.rs:2611:19:2611:19 | 1 | | {EXTERNAL LOCATION} | i32 |
53885387
| main.rs:2611:22:2611:22 | 2 | | {EXTERNAL LOCATION} | i32 |
53895388
| main.rs:2611:25:2611:25 | 3 | | {EXTERNAL LOCATION} | i32 |
53905389
| main.rs:2611:28:2611:29 | { ... } | | {EXTERNAL LOCATION} | () |
53915390
| main.rs:2612:9:2612:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5392-
| main.rs:2612:13:2612:13 | i | | {EXTERNAL LOCATION} | & |
53935391
| main.rs:2612:18:2612:26 | [...] | | {EXTERNAL LOCATION} | [;] |
53945392
| main.rs:2612:18:2612:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 |
53955393
| main.rs:2612:18:2612:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] |
@@ -5401,7 +5399,6 @@ inferType
54015399
| main.rs:2612:40:2612:40 | 1 | | {EXTERNAL LOCATION} | i32 |
54025400
| main.rs:2612:43:2612:44 | { ... } | | {EXTERNAL LOCATION} | () |
54035401
| main.rs:2613:9:2613:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5404-
| main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | Item |
54055402
| main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | i32 |
54065403
| main.rs:2613:18:2613:26 | [...] | | {EXTERNAL LOCATION} | [;] |
54075404
| main.rs:2613:18:2613:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 |
@@ -5425,7 +5422,6 @@ inferType
54255422
| main.rs:2616:9:2616:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
54265423
| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | i32 |
54275424
| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | u8 |
5428-
| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | & |
54295425
| main.rs:2616:18:2616:22 | vals1 | | {EXTERNAL LOCATION} | [;] |
54305426
| main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 |
54315427
| main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 |
@@ -5438,7 +5434,6 @@ inferType
54385434
| main.rs:2618:28:2618:28 | 3 | | {EXTERNAL LOCATION} | i32 |
54395435
| main.rs:2619:9:2619:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
54405436
| main.rs:2619:13:2619:13 | u | | {EXTERNAL LOCATION} | u16 |
5441-
| main.rs:2619:13:2619:13 | u | | {EXTERNAL LOCATION} | & |
54425437
| main.rs:2619:18:2619:22 | vals2 | | {EXTERNAL LOCATION} | [;] |
54435438
| main.rs:2619:18:2619:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 |
54445439
| main.rs:2619:24:2619:25 | { ... } | | {EXTERNAL LOCATION} | () |
@@ -5456,7 +5451,6 @@ inferType
54565451
| main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | u32 |
54575452
| main.rs:2622:9:2622:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
54585453
| main.rs:2622:13:2622:13 | u | | {EXTERNAL LOCATION} | u32 |
5459-
| main.rs:2622:13:2622:13 | u | | {EXTERNAL LOCATION} | & |
54605454
| main.rs:2622:18:2622:22 | vals3 | | {EXTERNAL LOCATION} | [;] |
54615455
| main.rs:2622:18:2622:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 |
54625456
| main.rs:2622:24:2622:25 | { ... } | | {EXTERNAL LOCATION} | () |
@@ -5471,7 +5465,6 @@ inferType
54715465
| main.rs:2624:35:2624:35 | 3 | | {EXTERNAL LOCATION} | i32 |
54725466
| main.rs:2625:9:2625:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
54735467
| main.rs:2625:13:2625:13 | u | | {EXTERNAL LOCATION} | u64 |
5474-
| main.rs:2625:13:2625:13 | u | | {EXTERNAL LOCATION} | & |
54755468
| main.rs:2625:18:2625:22 | vals4 | | {EXTERNAL LOCATION} | [;] |
54765469
| main.rs:2625:18:2625:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 |
54775470
| main.rs:2625:24:2625:25 | { ... } | | {EXTERNAL LOCATION} | () |
@@ -5535,7 +5528,6 @@ inferType
55355528
| main.rs:2636:26:2636:30 | "baz" | &T | {EXTERNAL LOCATION} | str |
55365529
| main.rs:2638:9:2638:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
55375530
| main.rs:2638:13:2638:13 | s | | {EXTERNAL LOCATION} | String |
5538-
| main.rs:2638:13:2638:13 | s | | {EXTERNAL LOCATION} | & |
55395531
| main.rs:2638:18:2638:25 | strings2 | | {EXTERNAL LOCATION} | [;] |
55405532
| main.rs:2638:18:2638:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String |
55415533
| main.rs:2638:27:2638:28 | { ... } | | {EXTERNAL LOCATION} | () |
@@ -5572,17 +5564,14 @@ inferType
55725564
| main.rs:2648:45:2648:61 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable |
55735565
| main.rs:2648:64:2648:80 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable |
55745566
| main.rs:2649:9:2653:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5575-
| main.rs:2649:13:2649:13 | c | | {EXTERNAL LOCATION} | & |
55765567
| main.rs:2649:13:2649:13 | c | | main.rs:2596:5:2596:24 | MyCallable |
55775568
| main.rs:2650:12:2650:20 | callables | | {EXTERNAL LOCATION} | [;] |
55785569
| main.rs:2650:12:2650:20 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable |
55795570
| main.rs:2651:9:2653:9 | { ... } | | {EXTERNAL LOCATION} | () |
55805571
| main.rs:2652:17:2652:22 | result | | {EXTERNAL LOCATION} | i64 |
5581-
| main.rs:2652:26:2652:26 | c | | {EXTERNAL LOCATION} | & |
55825572
| main.rs:2652:26:2652:26 | c | | main.rs:2596:5:2596:24 | MyCallable |
55835573
| main.rs:2652:26:2652:33 | c.call() | | {EXTERNAL LOCATION} | i64 |
55845574
| main.rs:2657:9:2657:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5585-
| main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | Item |
55865575
| main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | i32 |
55875576
| main.rs:2657:18:2657:18 | 0 | | {EXTERNAL LOCATION} | i32 |
55885577
| main.rs:2657:18:2657:22 | 0..10 | | {EXTERNAL LOCATION} | Range |
@@ -5591,7 +5580,6 @@ inferType
55915580
| main.rs:2657:24:2657:25 | { ... } | | {EXTERNAL LOCATION} | () |
55925581
| main.rs:2658:9:2658:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
55935582
| main.rs:2658:13:2658:13 | u | | {EXTERNAL LOCATION} | Range |
5594-
| main.rs:2658:13:2658:13 | u | | {EXTERNAL LOCATION} | & |
55955583
| main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | i32 |
55965584
| main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | u8 |
55975585
| main.rs:2658:18:2658:26 | [...] | | {EXTERNAL LOCATION} | [;] |
@@ -5612,7 +5600,6 @@ inferType
56125600
| main.rs:2659:21:2659:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 |
56135601
| main.rs:2659:24:2659:25 | 10 | | {EXTERNAL LOCATION} | i32 |
56145602
| main.rs:2660:9:2660:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5615-
| main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | Item |
56165603
| main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | i32 |
56175604
| main.rs:2660:18:2660:22 | range | | {EXTERNAL LOCATION} | Range |
56185605
| main.rs:2660:18:2660:22 | range | Idx | {EXTERNAL LOCATION} | i32 |
@@ -5636,7 +5623,6 @@ inferType
56365623
| main.rs:2666:20:2666:23 | 0u16 | | {EXTERNAL LOCATION} | u16 |
56375624
| main.rs:2667:18:2667:22 | 10u16 | | {EXTERNAL LOCATION} | u16 |
56385625
| main.rs:2669:9:2669:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5639-
| main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | Item |
56405626
| main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | u16 |
56415627
| main.rs:2669:18:2669:23 | range1 | | {EXTERNAL LOCATION} | Range |
56425628
| main.rs:2669:18:2669:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 |
@@ -5647,7 +5633,6 @@ inferType
56475633
| main.rs:2673:29:2673:29 | 2 | | {EXTERNAL LOCATION} | i32 |
56485634
| main.rs:2673:32:2673:32 | 3 | | {EXTERNAL LOCATION} | i32 |
56495635
| main.rs:2674:9:2674:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5650-
| main.rs:2674:13:2674:13 | i | | {EXTERNAL LOCATION} | & |
56515636
| main.rs:2674:18:2674:22 | vals3 | | {EXTERNAL LOCATION} | Vec |
56525637
| main.rs:2674:24:2674:25 | { ... } | | {EXTERNAL LOCATION} | () |
56535638
| main.rs:2676:13:2676:18 | vals4a | | {EXTERNAL LOCATION} | Vec |
@@ -5664,7 +5649,6 @@ inferType
56645649
| main.rs:2676:42:2676:42 | 3 | | {EXTERNAL LOCATION} | i32 |
56655650
| main.rs:2677:9:2677:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
56665651
| main.rs:2677:13:2677:13 | u | | {EXTERNAL LOCATION} | u16 |
5667-
| main.rs:2677:13:2677:13 | u | | {EXTERNAL LOCATION} | & |
56685652
| main.rs:2677:18:2677:23 | vals4a | | {EXTERNAL LOCATION} | Vec |
56695653
| main.rs:2677:18:2677:23 | vals4a | A | {EXTERNAL LOCATION} | Global |
56705654
| main.rs:2677:18:2677:23 | vals4a | T | {EXTERNAL LOCATION} | u16 |
@@ -5694,7 +5678,6 @@ inferType
56945678
| main.rs:2683:9:2683:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
56955679
| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | i32 |
56965680
| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | u32 |
5697-
| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | & |
56985681
| main.rs:2683:18:2683:22 | vals5 | | {EXTERNAL LOCATION} | Vec |
56995682
| main.rs:2683:18:2683:22 | vals5 | A | {EXTERNAL LOCATION} | Global |
57005683
| main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | i32 |
@@ -5735,7 +5718,6 @@ inferType
57355718
| main.rs:2689:20:2689:22 | 1u8 | | {EXTERNAL LOCATION} | u8 |
57365719
| main.rs:2690:9:2690:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
57375720
| main.rs:2690:13:2690:13 | u | | {EXTERNAL LOCATION} | u8 |
5738-
| main.rs:2690:13:2690:13 | u | | {EXTERNAL LOCATION} | & |
57395721
| main.rs:2690:18:2690:22 | vals7 | | {EXTERNAL LOCATION} | Vec |
57405722
| main.rs:2690:18:2690:22 | vals7 | A | {EXTERNAL LOCATION} | Global |
57415723
| main.rs:2690:18:2690:22 | vals7 | T | {EXTERNAL LOCATION} | u8 |
@@ -5752,12 +5734,9 @@ inferType
57525734
| main.rs:2692:48:2692:48 | 4 | | {EXTERNAL LOCATION} | i32 |
57535735
| main.rs:2694:13:2694:13 | _ | | {EXTERNAL LOCATION} | () |
57545736
| main.rs:2694:17:2697:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5755-
| main.rs:2694:21:2694:23 | row | | {EXTERNAL LOCATION} | & |
57565737
| main.rs:2694:28:2694:34 | matrix1 | | {EXTERNAL LOCATION} | Vec |
57575738
| main.rs:2694:36:2697:9 | { ... } | | {EXTERNAL LOCATION} | () |
57585739
| main.rs:2695:13:2696:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5759-
| main.rs:2695:17:2695:20 | cell | | {EXTERNAL LOCATION} | Item |
5760-
| main.rs:2695:25:2695:27 | row | | {EXTERNAL LOCATION} | & |
57615740
| main.rs:2695:29:2696:13 | { ... } | | {EXTERNAL LOCATION} | () |
57625741
| main.rs:2699:17:2699:20 | map1 | | {EXTERNAL LOCATION} | HashMap |
57635742
| main.rs:2699:17:2699:20 | map1 | K | {EXTERNAL LOCATION} | i32 |
@@ -5812,7 +5791,6 @@ inferType
58125791
| main.rs:2701:33:2701:37 | "two" | | {EXTERNAL LOCATION} | & |
58135792
| main.rs:2701:33:2701:37 | "two" | &T | {EXTERNAL LOCATION} | str |
58145793
| main.rs:2702:9:2702:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5815-
| main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | Item |
58165794
| main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | & |
58175795
| main.rs:2702:13:2702:15 | key | &T | {EXTERNAL LOCATION} | i32 |
58185796
| main.rs:2702:20:2702:23 | map1 | | {EXTERNAL LOCATION} | HashMap |
@@ -5830,7 +5808,6 @@ inferType
58305808
| main.rs:2702:20:2702:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str |
58315809
| main.rs:2702:32:2702:33 | { ... } | | {EXTERNAL LOCATION} | () |
58325810
| main.rs:2703:9:2703:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () |
5833-
| main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | Item |
58345811
| main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | & |
58355812
| main.rs:2703:13:2703:17 | value | &T | {EXTERNAL LOCATION} | Box |
58365813
| main.rs:2703:13:2703:17 | value | &T.A | {EXTERNAL LOCATION} | Global |

shared/typeinference/codeql/typeinference/internal/TypeInference.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -990,7 +990,7 @@ module Make1<LocationSig Location, InputSig1<Location> Input1> {
990990
TypeMention constraintMention
991991
) {
992992
exists(Type type | hasTypeConstraint(tt, type, constraint) |
993-
useUniversalConditions() and
993+
useUniversalConditions() and // todo: remove, and instead check constraints
994994
not exists(countConstraintImplementations(type, constraint)) and
995995
conditionSatisfiesConstraintTypeAt(abs, condition, constraintMention, _, _) and
996996
resolveTypeMentionRoot(condition) = abs.getATypeParameter() and

0 commit comments

Comments
 (0)