Add detection of unused enum variants

This commit is contained in:
Jakub Wieczorek 2014-09-20 13:26:10 +02:00
parent 9e3bf02c38
commit 2ec795b4f0
4 changed files with 110 additions and 39 deletions

View file

@ -63,8 +63,12 @@ pub struct PubStruct2 {
pub enum pub_enum { foo1, bar1 }
pub enum pub_enum2 { a(*const StructUsedInEnum) }
pub enum pub_enum3 { Foo = STATIC_USED_IN_ENUM_DISCRIMINANT }
enum priv_enum { foo2, bar2 } //~ ERROR: code is never used
enum used_enum { foo3, bar3 }
enum used_enum {
foo3,
bar3 //~ ERROR code is never used
}
fn f<T>() {}

View file

@ -28,8 +28,8 @@ fn field_read(f: Foo) -> uint {
}
enum XYZ {
X,
Y {
X, //~ ERROR variant is never used
Y { //~ ERROR variant is never used
a: String,
b: int //~ ERROR: code is never used
},

View file

@ -0,0 +1,41 @@
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(struct_variant)]
#![allow(unused_variable)]
#![deny(dead_code)]
enum Enum1 {
Variant1(int),
Variant2 //~ ERROR: code is never used
}
enum Enum2 {
Variant3(bool),
#[allow(dead_code)]
Variant4(int),
Variant5 { _x: int }, //~ ERROR: variant is never used: `Variant5`
Variant6(int), //~ ERROR: variant is never used: `Variant6`
_Variant7,
}
enum Enum3 { //~ ERROR: enum is never used
Variant8,
Variant9
}
fn main() {
let v = Variant1(1);
match v {
Variant1(_) => (),
Variant2 => ()
}
let x = Variant3(true);
}