| #![warn(clippy::empty_enum_variants_with_brackets)] | |
| #![allow(dead_code)] | |
| #![feature(more_qualified_paths)] | |
| pub enum PublicTestEnum { | |
| NonEmptyBraces { x: i32, y: i32 }, // No error | |
| NonEmptyParentheses(i32, i32), // No error | |
| EmptyBraces, | |
| //~^ empty_enum_variants_with_brackets | |
| EmptyParentheses(), // No error as enum is pub | |
| } | |
| enum TestEnum { | |
| NonEmptyBraces { x: i32, y: i32 }, // No error | |
| NonEmptyParentheses(i32, i32), // No error | |
| EmptyBraces, | |
| //~^ empty_enum_variants_with_brackets | |
| EmptyParentheses, | |
| //~^ empty_enum_variants_with_brackets | |
| AnotherEnum, // No error | |
| } | |
| mod issue12551 { | |
| enum EvenOdd { | |
| // Used as functions -> no error | |
| Even(), | |
| Odd(), | |
| // Not used as a function | |
| Unknown, | |
| //~^ empty_enum_variants_with_brackets | |
| } | |
| fn even_odd(x: i32) -> EvenOdd { | |
| (x % 2 == 0).then(EvenOdd::Even).unwrap_or_else(EvenOdd::Odd) | |
| } | |
| fn natural_number(x: i32) -> NaturalOrNot { | |
| (x > 0) | |
| .then(NaturalOrNot::Natural) | |
| .unwrap_or_else(NaturalOrNot::NotNatural) | |
| } | |
| enum NaturalOrNot { | |
| // Used as functions -> no error | |
| Natural(), | |
| NotNatural(), | |
| // Not used as a function | |
| Unknown, | |
| //~^ empty_enum_variants_with_brackets | |
| } | |
| enum RedundantParenthesesFunctionCall { | |
| // Used as a function call but with redundant parentheses | |
| Parentheses, | |
| //~^ empty_enum_variants_with_brackets | |
| // Not used as a function | |
| NoParentheses, | |
| } | |
| #[allow(clippy::no_effect)] | |
| fn redundant_parentheses_function_call() { | |
| // The parentheses in the below line are redundant. | |
| RedundantParenthesesFunctionCall::Parentheses; | |
| RedundantParenthesesFunctionCall::NoParentheses; | |
| } | |
| // Same test as above but with usage of the enum occurring before the definition. | |
| #[allow(clippy::no_effect)] | |
| fn redundant_parentheses_function_call_2() { | |
| // The parentheses in the below line are redundant. | |
| RedundantParenthesesFunctionCall2::Parentheses; | |
| RedundantParenthesesFunctionCall2::NoParentheses; | |
| } | |
| enum RedundantParenthesesFunctionCall2 { | |
| // Used as a function call but with redundant parentheses | |
| Parentheses, | |
| //~^ empty_enum_variants_with_brackets | |
| // Not used as a function | |
| NoParentheses, | |
| } | |
| } | |
| enum TestEnumWithFeatures { | |
| NonEmptyBraces { | |
| #[cfg(feature = "thisisneverenabled")] | |
| x: i32, | |
| }, // No error | |
| NonEmptyParentheses(#[cfg(feature = "thisisneverenabled")] i32), // No error | |
| } | |
| #[derive(Clone)] | |
| enum Foo { | |
| Variant1(i32), | |
| Variant2, | |
| Variant3, //~ ERROR: enum variant has empty brackets | |
| } | |
| #[derive(Clone)] | |
| pub enum PubFoo { | |
| Variant1(i32), | |
| Variant2, | |
| Variant3(), | |
| } | |
| fn issue16157() { | |
| enum E { | |
| V, | |
| //~^ empty_enum_variants_with_brackets | |
| } | |
| let E::V = E::V; | |
| <E>::V = E::V; | |
| <E>::V = E::V; | |
| } | |
| fn variant_with_braces() { | |
| enum E { | |
| V, | |
| //~^ empty_enum_variants_with_brackets | |
| } | |
| E::V = E::V; | |
| E::V = E::V; | |
| <E>::V = <E>::V; | |
| enum F { | |
| U, | |
| //~^ empty_enum_variants_with_brackets | |
| } | |
| F::U = F::U; | |
| <F>::U = F::U; | |
| } | |
| fn variant_with_comments_and_cfg() { | |
| enum E { | |
| V( | |
| // This is a comment | |
| ), | |
| } | |
| E::V() = E::V(); | |
| enum F { | |
| U { | |
| // This is a comment | |
| }, | |
| } | |
| F::U {} = F::U {}; | |
| enum G { | |
| V(#[cfg(target_os = "cuda")] String), | |
| } | |
| G::V() = G::V(); | |
| enum H { | |
| U { | |
| #[cfg(target_os = "cuda")] | |
| value: String, | |
| }, | |
| } | |
| H::U {} = H::U {}; | |
| } | |
| fn main() {} |