Skip to content

Commit 66d6770

Browse files
committed
Rust: If we're inferring both ways, it should really be to any element.
1 parent 69da4e7 commit 66d6770

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat
289289
)
290290
or
291291
// an array list expression (`[1, 2, 3]`) has the type of the first (any) element
292-
n1.(ArrayListExpr).getExpr(0) = n2 and
292+
n1.(ArrayListExpr).getExpr(_) = n2 and
293293
prefix1 = TypePath::singleton(TArrayTypeParameter()) and
294294
prefix2.isEmpty()
295295
or

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2664,12 +2664,19 @@ inferType
26642664
| main.rs:1832:19:1832:19 | 1 | | {EXTERNAL LOCATION} | i32 |
26652665
| main.rs:1832:22:1832:22 | 2 | | {EXTERNAL LOCATION} | i32 |
26662666
| main.rs:1832:25:1832:25 | 3 | | {EXTERNAL LOCATION} | i32 |
2667+
| main.rs:1834:13:1834:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 |
26672668
| main.rs:1834:13:1834:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 |
2669+
| main.rs:1834:21:1834:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 |
26682670
| main.rs:1834:21:1834:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 |
2671+
| main.rs:1834:22:1834:24 | 1u8 | | {EXTERNAL LOCATION} | i32 |
26692672
| main.rs:1834:22:1834:24 | 1u8 | | {EXTERNAL LOCATION} | u8 |
26702673
| main.rs:1834:27:1834:27 | 2 | | {EXTERNAL LOCATION} | i32 |
2674+
| main.rs:1834:27:1834:27 | 2 | | {EXTERNAL LOCATION} | u8 |
26712675
| main.rs:1834:30:1834:30 | 3 | | {EXTERNAL LOCATION} | i32 |
2676+
| main.rs:1834:30:1834:30 | 3 | | {EXTERNAL LOCATION} | u8 |
2677+
| main.rs:1835:13:1835:13 | u | | {EXTERNAL LOCATION} | i32 |
26722678
| main.rs:1835:13:1835:13 | u | | {EXTERNAL LOCATION} | u8 |
2679+
| main.rs:1835:18:1835:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 |
26732680
| main.rs:1835:18:1835:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 |
26742681
| main.rs:1837:13:1837:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 |
26752682
| main.rs:1837:21:1837:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 |
@@ -2687,7 +2694,9 @@ inferType
26872694
| main.rs:1840:32:1840:32 | 1 | | {EXTERNAL LOCATION} | i32 |
26882695
| main.rs:1840:32:1840:32 | 1 | | {EXTERNAL LOCATION} | u32 |
26892696
| main.rs:1840:35:1840:35 | 2 | | {EXTERNAL LOCATION} | i32 |
2697+
| main.rs:1840:35:1840:35 | 2 | | {EXTERNAL LOCATION} | u32 |
26902698
| main.rs:1840:38:1840:38 | 3 | | {EXTERNAL LOCATION} | i32 |
2699+
| main.rs:1840:38:1840:38 | 3 | | {EXTERNAL LOCATION} | u32 |
26912700
| main.rs:1841:13:1841:13 | u | | {EXTERNAL LOCATION} | i32 |
26922701
| main.rs:1841:13:1841:13 | u | | {EXTERNAL LOCATION} | u32 |
26932702
| main.rs:1841:18:1841:22 | vals3 | | file://:0:0:0:0 | [] |
@@ -2772,13 +2781,17 @@ inferType
27722781
| main.rs:1875:13:1875:17 | vals4 | | {EXTERNAL LOCATION} | Vec |
27732782
| main.rs:1875:13:1875:17 | vals4 | T | file://:0:0:0:0 | & |
27742783
| main.rs:1875:13:1875:17 | vals4 | T.&T | {EXTERNAL LOCATION} | u64 |
2784+
| main.rs:1875:33:1875:44 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 |
27752785
| main.rs:1875:33:1875:44 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 |
27762786
| main.rs:1875:33:1875:61 | ... .collect() | | {EXTERNAL LOCATION} | Vec |
27772787
| main.rs:1875:33:1875:61 | ... .collect() | T | file://:0:0:0:0 | & |
27782788
| main.rs:1875:33:1875:61 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 |
2789+
| main.rs:1875:34:1875:37 | 1u64 | | {EXTERNAL LOCATION} | i32 |
27792790
| main.rs:1875:34:1875:37 | 1u64 | | {EXTERNAL LOCATION} | u64 |
27802791
| main.rs:1875:40:1875:40 | 2 | | {EXTERNAL LOCATION} | i32 |
2792+
| main.rs:1875:40:1875:40 | 2 | | {EXTERNAL LOCATION} | u64 |
27812793
| main.rs:1875:43:1875:43 | 3 | | {EXTERNAL LOCATION} | i32 |
2794+
| main.rs:1875:43:1875:43 | 3 | | {EXTERNAL LOCATION} | u64 |
27822795
| main.rs:1876:18:1876:22 | vals4 | | {EXTERNAL LOCATION} | Vec |
27832796
| main.rs:1876:18:1876:22 | vals4 | T | file://:0:0:0:0 | & |
27842797
| main.rs:1876:18:1876:22 | vals4 | T.&T | {EXTERNAL LOCATION} | u64 |

0 commit comments

Comments
 (0)