Reports type parameters that can have in or out variance.

Using in and out variance provides more precise type inference in Kotlin and clearer code semantics.

Example:


  class Box<T>(val obj: T)

  fun consumeString(box: Box<String>) {}
  fun consumeCharSequence(box: Box<CharSequence>) {}

  fun usage(box: Box<String>) {
      consumeString(box)
      consumeCharSequence(box) // Compilation error
  }

The quick-fix adds the matching variance modifier:


  class Box<out T>(val obj: T)

  fun consumeString(box: Box<String>) {}
  fun consumeCharSequence(box: Box<CharSequence>) {}

  fun usage(box: Box<String>) ++{
      consumeString(box)
      consumeCharSequence(box) // OK
  }