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.
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:
Then it only picks up the variants that explicitly had a return statement, and ignores the final expression in the function.