Skip to content

Commit 210e234

Browse files
committed
Make liveness analysis respect privacy
1 parent 20415af commit 210e234

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/librustc/middle/liveness.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,7 +1197,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
11971197
}
11981198

11991199
hir::ExprKind::Call(ref f, ref args) => {
1200-
let succ = if self.tables.expr_ty(expr).conservative_is_uninhabited(self.ir.tcx) {
1200+
let m = self.ir.tcx.hir.get_module_parent(expr.id);
1201+
let succ = if self.ir.tcx.is_ty_uninhabited_from(m, self.tables.expr_ty(expr)) {
12011202
self.s.exit_ln
12021203
} else {
12031204
succ
@@ -1207,7 +1208,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
12071208
}
12081209

12091210
hir::ExprKind::MethodCall(.., ref args) => {
1210-
let succ = if self.tables.expr_ty(expr).conservative_is_uninhabited(self.ir.tcx) {
1211+
let m = self.ir.tcx.hir.get_module_parent(expr.id);
1212+
let succ = if self.ir.tcx.is_ty_uninhabited_from(m, self.tables.expr_ty(expr)) {
12111213
self.s.exit_ln
12121214
} else {
12131215
succ

src/test/ui/uninhabited/privately-uninhabited-dead-code.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// compile-pass
22

3-
#![deny(unreachable_code)]
3+
#![deny(unused_variables)]
44

55
mod foo {
66
enum Bar {}
@@ -14,6 +14,7 @@ mod foo {
1414
}
1515

1616
fn main() {
17+
let a = 42;
1718
foo::give_foo();
18-
println!("Hello, world!"); // ok: we can't tell that this code is dead
19+
println!("Hello, {}", a); // ok: we can't tell that this code is dead
1920
}

0 commit comments

Comments
 (0)