This allows two variables of the same struct type to be flattened into the same interface struct without a member name conflict. Add shaders-msl/frag/in_block_with_multiple_structs_of_same_type.frag unit test shader to demonstrate this.
It will get too messy to deal with constant initializers any other way, so just deal with complexity in argument_decl instead ...