Enum cases as protocol witnesses

To be fair, that example can also be written as:

case upc(_: Int, _: Int, _: Int, _: Int)

which would be equivalent and closer to the static func requirement syntax. It's just that nobody writes it that way because the unlabeled argument placeholders are noise.

Heck, you can even give the case actual argument names, and they don't do anything (that I'm aware of), but it still compiles (at least in 5.1):

case upc(_ useless1: Int, _ useless2: Int, _ useless3: Int, _ useless4: Int)

Essentially, the disconnect here is that enum cases allow for more shorthand by letting argument labels be elided completely and by not requiring actual argument names because there's no corresponding function body that needs to refer to them. But I don't think that matters here ultimately, because we're talking about protocol conformance, and so this relates back to the point that members of the Core Team have made in the past that the significance of protocols is that they serve as semantic requirements and not just bags of syntax.