I did wonder if there was a edge case like that that I hadn't forseen. That does make sense.
Presumably, Swift doesn't currently split between these types of protocols (reasonable). In that case, is it possible to have another error message for this? Like: "Protocol types cannot be used as a variable bound to a generic constraint." Or something like that which is worded better and more correct terminology?