My repro is unfortunately private code, so sorry...if it's not obvious what's going on I'll work up something else for you. But if you do something like this:
#[auto_enum(Iterator)]
fn foo() -> Impl Iterator<Item=whatever> {
if a {
return std::iter::empty();
}
// Some more of those
// And then return without an explicit return statement...
std::iter::from_fn(|| stuff)
}
Then it only picks up the variants that explicitly had a return statement, and ignores the final expression in the function.