I agree with @miku1958 on this. Shouldn't it be the maximal common protocols? Swift already has the capability to find the most specific protocol conformance (see this thread). So it should have no problem in finding the maximal common protocols too, I think.
EDIT: Or did you forget to add P
conformance to struct A
and B
in your example? In that case, I think compiler should throw error. If P.Assoc
has a protocol conformance, however, z
can be of existential type.