From f084bb7bcf4690df2789781c07e1e0fb7b63a82e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 8 Oct 2024 11:27:09 +0100 Subject: [PATCH] Rust: A couple of interesting cases with short-circuiting. --- .../unusedentities/UnreachableCode.expected | 22 +++++++++---------- .../query-tests/unusedentities/unreachable.rs | 16 ++++++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/rust/ql/test/query-tests/unusedentities/UnreachableCode.expected b/rust/ql/test/query-tests/unusedentities/UnreachableCode.expected index 83aba704046..5e7e99c47c6 100644 --- a/rust/ql/test/query-tests/unusedentities/UnreachableCode.expected +++ b/rust/ql/test/query-tests/unusedentities/UnreachableCode.expected @@ -2,15 +2,15 @@ | unreachable.rs:32:3:32:17 | ExprStmt | This code is never reached. | | unreachable.rs:39:3:39:17 | ExprStmt | This code is never reached. | | unreachable.rs:48:2:48:16 | ExprStmt | This code is never reached. | -| unreachable.rs:89:3:91:3 | MatchArm | This code is never reached. | -| unreachable.rs:92:3:94:3 | MatchArm | This code is never reached. | -| unreachable.rs:96:2:96:16 | ExprStmt | This code is never reached. | -| unreachable.rs:99:3:101:3 | MatchArm | This code is never reached. | -| unreachable.rs:102:3:104:3 | MatchArm | This code is never reached. | -| unreachable.rs:106:2:106:16 | ExprStmt | This code is never reached. | -| unreachable.rs:113:3:113:17 | ExprStmt | This code is never reached. | -| unreachable.rs:118:4:118:18 | ExprStmt | This code is never reached. | -| unreachable.rs:122:4:122:18 | ExprStmt | This code is never reached. | -| unreachable.rs:126:4:126:18 | ExprStmt | This code is never reached. | +| unreachable.rs:105:3:107:3 | MatchArm | This code is never reached. | +| unreachable.rs:108:3:110:3 | MatchArm | This code is never reached. | +| unreachable.rs:112:2:112:16 | ExprStmt | This code is never reached. | +| unreachable.rs:115:3:117:3 | MatchArm | This code is never reached. | +| unreachable.rs:118:3:120:3 | MatchArm | This code is never reached. | +| unreachable.rs:122:2:122:16 | ExprStmt | This code is never reached. | +| unreachable.rs:129:3:129:17 | ExprStmt | This code is never reached. | | unreachable.rs:134:4:134:18 | ExprStmt | This code is never reached. | -| unreachable.rs:137:2:137:16 | ExprStmt | This code is never reached. | +| unreachable.rs:138:4:138:18 | ExprStmt | This code is never reached. | +| unreachable.rs:142:4:142:18 | ExprStmt | This code is never reached. | +| unreachable.rs:150:4:150:18 | ExprStmt | This code is never reached. | +| unreachable.rs:153:2:153:16 | ExprStmt | This code is never reached. | diff --git a/rust/ql/test/query-tests/unusedentities/unreachable.rs b/rust/ql/test/query-tests/unusedentities/unreachable.rs index 3dbda4981e9..45f758164c7 100644 --- a/rust/ql/test/query-tests/unusedentities/unreachable.rs +++ b/rust/ql/test/query-tests/unusedentities/unreachable.rs @@ -82,6 +82,22 @@ fn unreachable_panic() { _ = maybe.unwrap(); // (always panics) do_something(); // BAD: unreachable code [NOT DETECTED] } + + if cond() { + do_something(); + _ = false && panic!(); // does not panic due to short-circuiting + do_something(); + _ = false || panic!(); + do_something(); // BAD: unreachable code [NOT DETECTED] + } + + if cond() { + do_something(); + _ = true || panic!(); // does not panic due to short-circuiting + do_something(); + _ = true && panic!(); + do_something(); // BAD: unreachable code [NOT DETECTED] + } } fn unreachable_match() {