[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`?
@barosl if `arg_names` is length 0 should you return `None` instead of `Some(arg_names)` -- maybe that will fix your issue w/ the empty brackets printing in diagnostic message `E0004`?