Reports impossible interface-to-interface type assertions.

Checks for type assertions v.(T) and corresponding type-switch cases in which the static type V of v is the interface that cannot possibly implement the target interface T. This occurs when V and T contain methods with the same name but different signatures.

Example:

var v interface {
  Read()
}
_ = v.(io.Reader)

The Read method in v has a different signature than the Read method in io.Reader, so this assertion cannot succeed.

This inspection only reports if the language version is 1.15 or higher.