Resolve enum field visibility correctly Fixes #79593. 🎉 Previously, this code treated enum fields' visibility as if they were struct fields. However, that's not correct because the visibility of a struct field with `ast::VisibilityKind::Inherited` is private to the module it's defined in, whereas the visibility of an *enum* field with `ast::VisibilityKind::Inherited` is the visibility of the enum it belongs to.
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.