Should the type "Double & String" be "Never"?

It seems to be an interface stylistic choice to only show protocol conformances instead of the full (correct) type signature. As an example:

  • in the first example foo's type signature is shown as foo(_ x: Collection)
  • in the second example the type signature doesn't take in account the class C1
  • in the last example max is shown as
max(_ x: Comparable, _ y: Comparable) -> Comparable

which with Unlock Existential Types for All Protocols may be misleading.

In the first three examples, typing x in the function body suggests x: Collection, x: P1 & P2 and x: P1 & P2 respectively, i.e. x's conformances instead of its type. Should it be filed as a bug?