[WIP] Fix ICE related to enum struct variants

This pull request tries to fix #19340, which states two ICE cases related to enum struct variants.

It is my first attempt to fix the compiler. I found this solution by trial and error, so the method used to fix the issue looks very hacky. Please review it, and direct me to find a better solution.

I'm also to add test cases. Where should I put them? Maybe `src/test/run-pass/issue-19340.rs`?
Yeah, I've done that in the local repository. It seems to pass the tests, but I'm still a bit concerned if there are more edge cases, such as one or more unnamed fields. Maybe that cannot happen?