enum A { StructWithFields { x: () }, TupleWithFields(()), Struct {}, Tuple(), Unit, } enum B { StructWithFields { x: () }, TupleWithFields(()), } enum C { StructWithFields { x: () }, TupleWithFields(()), Unit, } enum D { TupleWithFields(()), Unit, } enum E { TupleWithFields(()), } fn main() { // Only variants without fields are suggested (and others mentioned in a note) where an enum // is used rather than a variant. A.foo(); //~^ ERROR expected value, found enum `A` B.foo(); //~^ ERROR expected value, found enum `B` C.foo(); //~^ ERROR expected value, found enum `C` D.foo(); //~^ ERROR expected value, found enum `D` E.foo(); //~^ ERROR expected value, found enum `E` // Only tuple variants are suggested in calls or tuple struct pattern matching. let x = A(3); //~^ ERROR expected function, tuple struct or tuple variant, found enum `A` if let A(3) = x { } //~^ ERROR expected tuple struct or tuple variant, found enum `A` }