diff options
| author | varkor <github@varkor.com> | 2018-11-06 19:38:01 +0000 |
|---|---|---|
| committer | varkor <github@varkor.com> | 2018-12-11 11:18:55 +0000 |
| commit | 210e2347335dbb097aefcd8f3002a0c4e72aa9ed (patch) | |
| tree | 67fb40a4ff589a1f690bf5ad06e490397074a4ca /src | |
| parent | 20415af14207cd4aae261de8ae7af81d4afdc21a (diff) | |
| download | rust-210e2347335dbb097aefcd8f3002a0c4e72aa9ed.tar.gz rust-210e2347335dbb097aefcd8f3002a0c4e72aa9ed.zip | |
Make liveness analysis respect privacy
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/middle/liveness.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/uninhabited/privately-uninhabited-dead-code.rs | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index 2b9a44429a0..b99b668b2db 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -1197,7 +1197,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> { } hir::ExprKind::Call(ref f, ref args) => { - let succ = if self.tables.expr_ty(expr).conservative_is_uninhabited(self.ir.tcx) { + let m = self.ir.tcx.hir.get_module_parent(expr.id); + let succ = if self.ir.tcx.is_ty_uninhabited_from(m, self.tables.expr_ty(expr)) { self.s.exit_ln } else { succ @@ -1207,7 +1208,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> { } hir::ExprKind::MethodCall(.., ref args) => { - let succ = if self.tables.expr_ty(expr).conservative_is_uninhabited(self.ir.tcx) { + let m = self.ir.tcx.hir.get_module_parent(expr.id); + let succ = if self.ir.tcx.is_ty_uninhabited_from(m, self.tables.expr_ty(expr)) { self.s.exit_ln } else { succ diff --git a/src/test/ui/uninhabited/privately-uninhabited-dead-code.rs b/src/test/ui/uninhabited/privately-uninhabited-dead-code.rs index 602857ab1be..9fe8a5c832c 100644 --- a/src/test/ui/uninhabited/privately-uninhabited-dead-code.rs +++ b/src/test/ui/uninhabited/privately-uninhabited-dead-code.rs @@ -1,6 +1,6 @@ // compile-pass -#![deny(unreachable_code)] +#![deny(unused_variables)] mod foo { enum Bar {} @@ -14,6 +14,7 @@ mod foo { } fn main() { + let a = 42; foo::give_foo(); - println!("Hello, world!"); // ok: we can't tell that this code is dead + println!("Hello, {}", a); // ok: we can't tell that this code is dead } |
