Add a lint for not using field pattern shorthands

Closes #17792.
I think that when I wrote this originally I didn’t have the `as_str()` here, but it made the compiler crash when visiting struct patterns for some reason, so I added in the `as_str()` call.