about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-11-06 19:38:01 +0000
committervarkor <github@varkor.com>2018-12-11 11:18:55 +0000
commit210e2347335dbb097aefcd8f3002a0c4e72aa9ed (patch)
tree67fb40a4ff589a1f690bf5ad06e490397074a4ca /src
parent20415af14207cd4aae261de8ae7af81d4afdc21a (diff)
downloadrust-210e2347335dbb097aefcd8f3002a0c4e72aa9ed.tar.gz
rust-210e2347335dbb097aefcd8f3002a0c4e72aa9ed.zip
Make liveness analysis respect privacy
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/liveness.rs6
-rw-r--r--src/test/ui/uninhabited/privately-uninhabited-dead-code.rs5
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
 }