about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOwen Sanchez <pengowen816@gmail.com>2017-08-11 21:52:16 -0700
committerOwen Sanchez <pengowen816@gmail.com>2017-08-11 22:07:28 -0700
commiteeb748aa12a3bb7f6bbd1205385fa0a0adbef90c (patch)
treebcae0ad2ab2dcb56f6c803c5d8f3696486699c47 /src
parent0b2c9f03efc248680a8e7eeedb6e5f8da5947774 (diff)
downloadrust-eeb748aa12a3bb7f6bbd1205385fa0a0adbef90c.tar.gz
rust-eeb748aa12a3bb7f6bbd1205385fa0a0adbef90c.zip
Don't trigger unused_result on functions returning empty enums
Diffstat (limited to 'src')
-rw-r--r--src/librustc_lint/unused.rs8
-rw-r--r--src/test/ui/issue-43806.rs7
2 files changed, 14 insertions, 1 deletions
diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs
index e5b818cd5fb..7773891b5d0 100644
--- a/src/librustc_lint/unused.rs
+++ b/src/librustc_lint/unused.rs
@@ -148,7 +148,13 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
         let ty_warned = match t.sty {
             ty::TyTuple(ref tys, _) if tys.is_empty() => return,
             ty::TyNever => return,
-            ty::TyAdt(def, _) => check_must_use(cx, def.did, s.span, ""),
+            ty::TyAdt(def, _) => {
+                if def.variants.is_empty() {
+                    return;
+                } else {
+                    check_must_use(cx, def.did, s.span, "")
+                }
+            },
             _ => false,
         };
 
diff --git a/src/test/ui/issue-43806.rs b/src/test/ui/issue-43806.rs
index df7f756127c..7757a503c7e 100644
--- a/src/test/ui/issue-43806.rs
+++ b/src/test/ui/issue-43806.rs
@@ -12,15 +12,22 @@
 
 #![deny(unused_results)]
 
+enum Void {}
+
 fn foo() {}
 
 fn bar() -> ! {
     loop {}
 }
 
+fn baz() -> Void {
+    loop {}
+}
+
 fn qux() {
     foo();
     bar();
+    baz();
 }
 
 fn main() {}