I understand the review of the PR has paused for a while. I just would like to bring up another mismatching scenario that isn't mentioned in the doc and is probably worth considering.
protocol Proto {
var x: Int? { get }
}
struct Test: Proto {
var x: Int
}
In my opinion this example meets the following criteria of the doc perfectly:
it should be based on what the protocol requirement semantically requires.
I think supporting the above example helps to remove boilerplate code (though I have no idea how complex it would be to add support for it).