Skip to content

Commit bb69e60

Browse files
committed
fix no_effect lint
1 parent 77ed899 commit bb69e60

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/no_effect.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
22
use rustc::hir::def::{Def, PathResolution};
3-
use rustc::hir::{Expr, Expr_, Stmt, StmtSemi};
3+
use rustc::hir::{Expr, Expr_, Stmt, StmtSemi, BlockCheckMode, UnsafeSource};
44
use utils::{in_macro, span_lint, snippet_opt, span_lint_and_then};
55
use std::ops::Deref;
66

@@ -140,11 +140,11 @@ fn reduce_expression<'a>(cx: &LateContext, expr: &'a Expr) -> Option<Vec<&'a Exp
140140
}
141141
Expr_::ExprBlock(ref block) => {
142142
if block.stmts.is_empty() {
143-
block.expr.as_ref().and_then(|e| if e.span == expr.span {
143+
block.expr.as_ref().and_then(|e| match block.rules {
144+
BlockCheckMode::UnsafeBlock(UnsafeSource::UserProvided) => None,
145+
BlockCheckMode::DefaultBlock => Some(vec![&**e]),
144146
// in case of compiler-inserted signaling blocks
145-
reduce_expression(cx, e)
146-
} else {
147-
Some(vec![e])
147+
_ => reduce_expression(cx, e),
148148
})
149149
} else {
150150
None

tests/compile-fail/no_effect.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ enum Enum {
1818
fn get_number() -> i32 { 0 }
1919
fn get_struct() -> Struct { Struct { field: 0 } }
2020

21+
unsafe fn unsafe_fn() -> i32 { 0 }
22+
2123
fn main() {
2224
let s = get_struct();
2325
let s2 = get_struct();
@@ -50,6 +52,7 @@ fn main() {
5052

5153
// Do not warn
5254
get_number();
55+
unsafe { unsafe_fn() };
5356

5457
Tuple(get_number()); //~ERROR statement can be reduced
5558
//~^HELP replace it with
@@ -105,4 +108,7 @@ fn main() {
105108
[42; 55][get_number() as usize]; //~ERROR statement can be reduced
106109
//~^HELP replace it with
107110
//~|SUGGESTION [42; 55];get_number() as usize;
111+
{get_number()}; //~ERROR statement can be reduced
112+
//~^HELP replace it with
113+
//~|SUGGESTION get_number();
108114
}

0 commit comments

Comments
 (0)