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 asfoo(_ 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?