#![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; ::V = E::V; ::V = E::V; } fn variant_with_braces() { enum E { V, //~^ empty_enum_variants_with_brackets } E::V = E::V; E::V = E::V; ::V = ::V; enum F { U, //~^ empty_enum_variants_with_brackets } F::U = F::U; ::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() {}