Skip to content

Commit e149071

Browse files
authored
Merge pull request github#17803 from paldepind/unreachable2
Rust: More test cases for rust/dead-code
2 parents 74ef916 + 4ddc7a4 commit e149071

File tree

4 files changed

+98
-16
lines changed

4 files changed

+98
-16
lines changed
Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
1-
| unreachable.rs:12:3:12:17 | ExprStmt | This code is never reached. |
2-
| unreachable.rs:20:3:20:17 | ExprStmt | This code is never reached. |
3-
| unreachable.rs:32:3:32:17 | ExprStmt | This code is never reached. |
4-
| unreachable.rs:39:3:39:17 | ExprStmt | This code is never reached. |
5-
| unreachable.rs:60:2:60:16 | ExprStmt | This code is never reached. |
6-
| unreachable.rs:106:16:106:23 | ExprStmt | This code is never reached. |
7-
| unreachable.rs:114:15:114:22 | ExprStmt | This code is never reached. |
8-
| unreachable.rs:130:2:130:16 | ExprStmt | This code is never reached. |
9-
| unreachable.rs:140:2:140:16 | ExprStmt | This code is never reached. |
10-
| unreachable.rs:147:3:147:17 | ExprStmt | This code is never reached. |
11-
| unreachable.rs:156:4:156:18 | ExprStmt | This code is never reached. |
12-
| unreachable.rs:162:3:162:17 | ExprStmt | This code is never reached. |
13-
| unreachable.rs:168:4:168:18 | ExprStmt | This code is never reached. |
14-
| unreachable.rs:171:2:171:16 | ExprStmt | This code is never reached. |
1+
| unreachable.rs:13:3:13:17 | ExprStmt | This code is never reached. |
2+
| unreachable.rs:21:3:21:17 | ExprStmt | This code is never reached. |
3+
| unreachable.rs:33:3:33:17 | ExprStmt | This code is never reached. |
4+
| unreachable.rs:40:3:40:17 | ExprStmt | This code is never reached. |
5+
| unreachable.rs:61:2:61:16 | ExprStmt | This code is never reached. |
6+
| unreachable.rs:107:16:107:23 | ExprStmt | This code is never reached. |
7+
| unreachable.rs:115:15:115:22 | ExprStmt | This code is never reached. |
8+
| unreachable.rs:131:2:131:16 | ExprStmt | This code is never reached. |
9+
| unreachable.rs:141:2:141:16 | ExprStmt | This code is never reached. |
10+
| unreachable.rs:148:3:148:17 | ExprStmt | This code is never reached. |
11+
| unreachable.rs:157:4:157:18 | ExprStmt | This code is never reached. |
12+
| unreachable.rs:163:3:163:17 | ExprStmt | This code is never reached. |
13+
| unreachable.rs:169:4:169:18 | ExprStmt | This code is never reached. |
14+
| unreachable.rs:177:4:177:18 | ExprStmt | This code is never reached. |
15+
| unreachable.rs:180:2:180:16 | ExprStmt | This code is never reached. |
16+
| unreachable.rs:197:2:197:16 | ExprStmt | This code is never reached. |
17+
| unreachable.rs:203:3:203:17 | ExprStmt | This code is never reached. |
18+
| unreachable.rs:206:2:206:16 | ExprStmt | This code is never reached. |
19+
| unreachable.rs:218:3:218:17 | ExprStmt | This code is never reached. |
20+
| unreachable.rs:233:2:233:16 | ExprStmt | This code is never reached. |
21+
| unreachable.rs:242:2:242:16 | ExprStmt | This code is never reached. |

rust/ql/test/query-tests/unusedentities/UnusedValue.expected

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,8 @@
2828
| more.rs:80:9:80:14 | a_ptr4 | Variable is assigned a value that is never used. |
2929
| more.rs:95:9:95:13 | d_ptr | Variable is assigned a value that is never used. |
3030
| more.rs:101:9:101:17 | f_ptr | Variable is assigned a value that is never used. |
31+
| unreachable.rs:166:6:166:6 | x | Variable is assigned a value that is never used. |
32+
| unreachable.rs:190:14:190:14 | a | Variable is assigned a value that is never used. |
33+
| unreachable.rs:199:9:199:9 | a | Variable is assigned a value that is never used. |
34+
| unreachable.rs:210:11:210:11 | a | Variable is assigned a value that is never used. |
35+
| unreachable.rs:217:6:217:6 | a | Variable is assigned a value that is never used. |

rust/ql/test/query-tests/unusedentities/main.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,9 +449,14 @@ fn main() {
449449
func_ptrs();
450450
folds_and_closures();
451451

452-
unreachable_if();
452+
unreachable_if_1();
453453
unreachable_panic();
454454
unreachable_match();
455455
unreachable_loop();
456456
unreachable_paren();
457+
unreachable_let_1();
458+
unreachable_let_2();
459+
unreachable_if_2();
460+
unreachable_if_3();
461+
457462
}

rust/ql/test/query-tests/unusedentities/unreachable.rs

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11

22
//fn cond() -> bool;
33
//fn get_a_number() -> i32;
4+
//fn maybe_get_a_number() -> Option<i32>;
45

56
// --- unreachable code --
67

78
fn do_something() {
89
}
910

10-
fn unreachable_if() {
11+
fn unreachable_if_1() {
1112
if false {
1213
do_something(); // BAD: unreachable code
1314
} else {
@@ -162,6 +163,14 @@ fn unreachable_loop() {
162163
do_something(); // BAD: unreachable code
163164
}
164165

166+
for x in 1..10 {
167+
if cond() {
168+
continue;
169+
do_something(); // BAD: unreachable code
170+
}
171+
do_something();
172+
}
173+
165174
loop {
166175
if cond() {
167176
return;
@@ -176,3 +185,59 @@ fn unreachable_loop() {
176185
fn unreachable_paren() {
177186
let _ = (((1)));
178187
}
188+
189+
fn unreachable_let_1() {
190+
if let Some(a) = maybe_get_a_number() {
191+
do_something();
192+
return;
193+
} else {
194+
do_something();
195+
}
196+
197+
do_something(); // SPURIOUS: unreachable code
198+
199+
if let a = get_a_number() { // (always succeeds)
200+
do_something();
201+
return;
202+
} else {
203+
do_something(); // BAD: unreachable code
204+
}
205+
206+
do_something(); // BAD: unreachable code
207+
}
208+
209+
fn unreachable_let_2() {
210+
let Some(a) = maybe_get_a_number() else {
211+
do_something();
212+
return;
213+
};
214+
215+
do_something();
216+
217+
let a = maybe_get_a_number() else { // (always succeeds)
218+
do_something(); // BAD: unreachable code
219+
return;
220+
};
221+
222+
do_something();
223+
}
224+
225+
fn unreachable_if_2() {
226+
if cond() {
227+
do_something();
228+
return;
229+
} else {
230+
do_something();
231+
}
232+
233+
do_something(); // SPURIOUS: unreachable code
234+
}
235+
236+
fn unreachable_if_3() {
237+
if !cond() {
238+
do_something();
239+
return;
240+
}
241+
242+
do_something(); // SPURIOUS: unreachable code
243+
}

0 commit comments

Comments
 (0)